Страница: 1 |
Как передавать строку, в качестве возвращаемого значения и аргумента между ASM'ом и VB ? Вчера часа четыре промучался :(
Так как передавать, седня на свежую голову получилось, теперь как бы работать с unicode'ом... чтобы при объявлении АПИ сразу же указывать не As Long, a As String ??? Ладно... вот спустя энное кол-во часов сам нашел ответ на вопрос... скоро буду тренироваться, задам вопрос и начну на него отвечать... рекорды по времени ставить В общем вот что откопалось: invoke PropSysFreeString, m_bstrMsg invoke PropSysAllocString, sData mov m_bstrMsg, eax ret OutStrData endp А что собственно известо об этих функциях. Раз в АСМ единственное место кудо можно возвращать Раз уж ты взял на себя благородную миссию самому себе отвечать, то поясни тогда заодно для любознательных пользователей хотя бы описание этих функций. Типа такого 'Эта функция делает то то и то то... и т.д. Я вот потом еще посидел и нашел вот это: SysFreeString, SysAllocStringLen, SysStringByteLen... Но в конце концов так я стабильной работы и не добился, после нескольких сот вызовов программа вываливалась с ошибкой о недопустимой операции... Объяснить я что эти функции делают могу только по MSDN'ну, т.к. сам их нашел при дезасииблировании какой-то программы использующей COM... там в конце процедуры и были эти функции... но по-ходу они сохраняют строки в каком-то особом формате понятнм COM и, в частноти, VB... Страница: 1 |
Вопрос: Как передать из dll строку
Добавлено: 11.05.04 09:37
Автор вопроса: sne | Web-сайт:
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 11.05.04 13:05
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 11.05.04 16:50
OutStrData proc sData:DWORD
Как я понимаю, это же можно реализовать на всех языках, к примеру C, PB... так что пригодится всем
Номер ответа: 3
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #3
Добавлено: 16.05.04 00:07
Судя по инклюду они из OLE32.DLL
значение функции это регистр EAX, то здесь он скорее всего пересылает туда указатель на строку по метке m_bstrMsg.
invoke PropSysFreeString, m_bstrMsg
Номер ответа: 4
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #4
Добавлено: 16.05.04 21:39
Номер ответа: 5
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #5
Добавлено: 25.05.04 15:29
Лучше делать так передовать адрес на буфер строки в качестве параметра... так как создовать в памяти строку... и передовать на неё указатель.. как то не гуд...