![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 30.08.2011
Сообщений: 1
|
![]()
Добрый день!
Никогда не писал на vba, но понадобилось решить задачу. Сегодня столкнулся с проблемой. Суть задачи: подключить DLL, передать ей команду (строку) и получить ответ. Обмен строками в utf-8. Решил действовать в "лоб". 1) Подключил dll, описал функцию. Private Declare Function SendFunc Lib "somelib.dll" _ (ByVal lpMess As Long) As Long 2) Далее стал передовать в функцию Dim str As String Dim pAns As Long str = "some text" lpAns = SendFunc(StrPtr(str)) Обратно получаю ответ (ответ тоже идет в utf-8), используя: (нашел в интернете) Private Function PointerToString(lngPtr As Long) As String Dim strTemp As String Dim lngLen As Long If lngPtr Then lngLen = lstrlenW(lngPtr) * 2 If lngLen Then strTemp = Space(lngLen) CopyMemory strTemp, ByVal lngPtr, lngLen PointerToString = Replace(strTemp, Chr(0), "") End If End If End Function В итоге возникает проблема. 1. Библиотека говорит, что посылаемые мною команды неверны, хотя они верные. Я думаю, что это из-за кодировки. 2. Возвращаемое значение читается, но порой "выскакивают" лишние символы. Я думаю, что это тоже из-за кодировки. Есть ли у вас какие-нибудь идеи? Где копать? Как правильно преобразовывать строку в указатель и обратно? И как кодировать в utf8? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Указатели и строки(С) | Alina_Honey | Помощь студентам | 0 | 03.06.2011 02:04 |
С++ Строки + указатели | S1av0k | Помощь студентам | 4 | 03.12.2010 20:43 |
Указатели в DLL | Creadth | Общие вопросы Delphi | 8 | 17.04.2009 19:07 |
Указатели на строки | koljakolja | Общие вопросы C/C++ | 2 | 17.10.2008 22:57 |