Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница:

 

  Вопрос: Строки, указатели и DLL Добавлено: 30.08.11 10:36  

Автор вопроса:  farique
Добрый день!

Никогда не писал на 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?

Ответить

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

Нет ответов

Страница:

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



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