add

Тема в разделе "WASM.BEGINNERS", создана пользователем rubic_, 20 окт 2007.

  1. rubic_

    rubic_ Женя

    Публикаций:
    0
    Регистрация:
    9 июл 2007
    Сообщения:
    121
    Адрес:
    Омск
    Код (Text):
    1.      
    2.                 mov         eax,infile_.lpstrFile
    3.                 push        ebx
    4.                 xor         ebx,ebx
    5.                 mov         bx,infile_.nFileOffset
    6.                 add         eax,ebx
    7.                 pop         ebx                      ;infile_ has type OPENFILENAME
    Здрасте, помогите плз, вот работаю со структурой OPENFILENAME и есть пример, который вытаскивает имя файла из полного пути, но я в него что-то не въезжаю(
    я прочел на MSDN, что infile_.nFileOffset содержет позицию начала имени файла(выбранного из диалога), infile_.lpstrFile содержет полный путь к файлу, так как же
    путем сложения строки с числом получается вырезанное имя файла из полного пути. я недавно учу асм, и еще туплю когда вижу такие замашки. в чем фокус?
     
  2. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    А что здесь непонятного?
    Указатель на строку, содержащую полный путь к файлу, складывается со смещением до непосредственно имени файла.
    В результате получается указатель на имя файла(минуя предшествующий путь).

    ps: что за манера обзывать топики так многозвучно?
     
  3. Sturgeon

    Sturgeon New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    111
    Попробую чуть-чуть подробнее объяснить. Хотя mathio все правильно сказал.

    nFileOffset - определяет сдвиг (основанный на нуле) от начала пути на имени файла в строке, на которую указывает параметр lpstrFile. К примеру, если lpstrFile указывает на следующую строку, "c:\dir1\dir2\file.ext", то этот параметр равен 13, что обозначает сдвиг строки "file.ext" от начала параметра lpstrFile.

    Код (Text):
    1.                 mov  eax,infile_.lpstrFile      ; в еах указатель на строку с полным именем. Пример: "C:\WINDOWS\system32\calc.exe" Пусть он будет равен 402000
    2.                 push ebx
    3.                 xor     ebx,ebx
    4.                 mov  bx,infile_.nFileOffset   ; в ебх сдвиг до собственного имени файла = 20 = 14h
    5.                 add  eax,ebx                    ; к указателю на начало строки прибавляешь сдвиг (длину пути через все папки) и получаешь указатель на собственно имя файла = 402014
    6.                 pop  ebx
    Вот здесь хорошо написано про структуру OPENFILENAME
    http://www.firststeps.ru/mfc/steps/r.php?140
    И главное, на русском.
     
  4. rubic_

    rubic_ Женя

    Публикаций:
    0
    Регистрация:
    9 июл 2007
    Сообщения:
    121
    Адрес:
    Омск
    что не нравиться? с чем проблема, то и название.
    Хотя спс за ответ, немного не правильно перевел с МСДН( а так теперь все ясно. спс. Пойду перечитаю адрисацию,а то стыдный косяк вышел(
    Sturgeon, спс за помощь
     
  5. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    что не нравиться? с чем проблема, то и название.
    Не нравится то, что новые люди, приходя на форум, плодят однотипные топики в несметном количестве.
    И вот после вас придут следующие и бегло просмотря названия топиков создадут свой "АДД" и зададут там однотипный же вопрос.
    Читаем вдумчиво https://www.wasm.ru/forum/viewtopic.php?id=17962
     
  6. rubic_

    rubic_ Женя

    Публикаций:
    0
    Регистрация:
    9 июл 2007
    Сообщения:
    121
    Адрес:
    Омск
    Будте уверенны, что задам еще здесь не 1 десяток вопросов. Не хотелось бы ругаться, но как смог так и сформулировал. Не нравиться тема не заходите! Ведь я не назвал тему "ВСЕ ВСЕ БЕГИТЕ ПОМОГАЙТЕ МНЕ У МЕНЯ ВСЕ НЕ РАБОТАЕТ!"
    Ну извините, что я такой недальновидный, так уж природа распорядилась...
    Как хорошо, что вы, в первый месяц опыта программирования, научились задавать дальновидные, нетривиальные вопросы. Надеюсь дотянуться до вас когда разберусь с азами асма.