Тип данных

Тема в разделе "WASM.BEGINNERS", создана пользователем vg, 11 июл 2007.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Есть переменная
    Targdet db 256 dup(?)
    Необходимо передать её значение(путь к папке) в функцию
    Function proc Targetpass:?
    Как правильно записать подходящий тип данных для Targetpass
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    передача массивов происходит по ссылке (указателю). соответственно тип данных - dword
     
  3. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Почему тогда в Targetpass после передачи вместо необходимого значения(путь к папке) находится какая-то фигня
     
  4. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    дай код
     
  5. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    код в студию!
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    не знаю, как в 64битах, а в 32-битной оси стек выравнивается по 4 байта. Поэтому, однозначно DWORD. А фигня может быть, если ты передаешь не смещение пути, а соержание первых 4-х байт переменной, в которой хранится путь. В отладчике б посмотрел это дело, что ли.
     
  7. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Делаю так

    Function PROTO:lol: WORD

    Targdet db 256 dup(?)
    ...
    Targdet присваевается значение
    invoke Function, addr Targdet
    ...
    Function proc Targetpass:lol: WORD
    invoke MessageBox,0,addr Targdet,ADDR AppName,MB_OK

    Всё OK. MessageBox показывает необходимое содержимое Targdet, т.е. оно не изменялось.

    Делаю так

    Targdet db 256 dup(?)
    ...
    Targdet присваевается значение
    invoke Function, addr Targdet
    ...
    Function proc Targetpass:lol: WORD
    invoke MessageBox,0,addr Targetpass,ADDR AppName,MB_OK

    Получается Фигня
     
  8. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    и что значит это:
    что присвоили то и вывели, дай полный код
     
  9. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Не важно как присваевается и что. В обоих случаях одинаково, но в первом случае всё OK, а во втором нет.
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    проблема в том, что во втором случае ты почему-то передаешь АДРЕС указателья в стеке, а не сам указатель. У тебя:
    А надо
     
  11. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Так прога вылетает :)
     
  12. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    А на каком участке она вылетает? Я не верю, что простой MessageBox, да еще и с таким вызовом, как ты показал, может привести к падению программы. Ты в отладчике ее смотрел? У тебя в Targdet строка правильно заносится? Ты ret из своей функции делаешь? Ты следишь за регистрами, чтобы они в результате вызова апишки не менялись?
     
  13. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    полный код в студию :) помоему товарисч не уловил разницы между адресом и значением