Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 |

 

  Вопрос: Как передать из dll строку Добавлено: 11.05.04 09:37  

Автор вопроса:  sne | Web-сайт: hw.t-k.ru | ICQ: 233286456 

Как передавать строку, в качестве возвращаемого значения и аргумента между ASM'ом и VB ? Вчера часа четыре промучался :(

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 11.05.04 13:05

Так как передавать, седня на свежую голову получилось, теперь как бы работать с unicode'ом... чтобы при объявлении АПИ сразу же указывать не As Long, a As String ???

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 11.05.04 16:50

Ладно... вот спустя энное кол-во часов сам нашел ответ на вопрос... скоро буду тренироваться, задам вопрос и начну на него отвечать... рекорды по времени ставить ;) В общем вот что откопалось:

OutStrData proc sData:DWORD

invoke PropSysFreeString, m_bstrMsg

invoke PropSysAllocString, sData

mov m_bstrMsg, eax

ret

OutStrData endp



Как я понимаю, это же можно реализовать на всех языках, к примеру C, PB... так что пригодится всем :)

Ответить

Номер ответа: 3
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #3
Добавлено: 16.05.04 00:07

А что собственно известо об этих функциях.
Судя по инклюду они из OLE32.DLL

Раз в АСМ единственное место кудо можно возвращать
значение функции это регистр EAX, то здесь он скорее всего пересылает туда указатель на строку по метке m_bstrMsg.

Раз уж ты взял на себя благородную миссию самому себе отвечать, то поясни тогда заодно для любознательных пользователей хотя бы описание этих функций.

Типа такого

'Эта функция делает то то и то то...
 invoke PropSysFreeString, m_bstrMsg

и т.д.

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 16.05.04 21:39

Я вот потом еще посидел и нашел вот это: SysFreeString, SysAllocStringLen, SysStringByteLen... Но в конце концов так я стабильной работы и не добился, после нескольких сот вызовов программа вываливалась с ошибкой о недопустимой операции... Объяснить я что эти функции делают могу только по MSDN'ну, т.к. сам их нашел при дезасииблировании какой-то программы использующей COM... там в конце процедуры и были эти функции... но по-ходу они сохраняют строки в каком-то особом формате понятнм COM и, в частноти, VB...

Ответить

Номер ответа: 5
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #5
Добавлено: 25.05.04 15:29
Лучше делать так передовать адрес на буфер строки в качестве параметра... так как создовать в памяти строку... и передовать на неё указатель.. как то не гуд...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам