Доброго здоровья всем
Люди добрые, подскажите начинающему простой вопрос:
в Excel есть код:
Declare Function BYKCom_ListDevices Lib "BykUsbCom.dll" (ByVal result As String, ByVal MaxResult As Long, ByRef Written As Long) As Long ' функция библиотеки
Sub Кнопка()
Dim r As String
Dim dwMaxRes As Long
Dim dwWritten As Long
Dim error As Long
Dim r_array As Variant
Dim row As Integer
Dim col As Integer
Dim i As Integer
dwMaxRes = 2000
r = String(2000, 0) 'тут не пойму что за...
error = BYKCom_ListDevices(r, dwMaxRes, dwWritten)
If error = 0 Then
Else
End If
End Sub
результат в строке r = String(2000, 0) представляет из себя строку длиной в 2000 символов, но что за символы не понятно, watcher показывает квадраты, так понимаю символы в unicode, но что за символы??
string(2000, 0) — первый параметр — количество экземпляров символов, второй — код символа — 0?? пустой символ ? как тогда из пустого что то получается?
в vba работает, библиотека возвращает результат
пытаюсь запустить тоже самое в VBScript(через другую библиотеку, которая умеет подключать к себе библиотеки и вызывать их функции, так как не могу в VBS определить declare), как всегда НО:
Set DX = CreateObject("DynamicWrapperX") ' библиотека "обертка"
DX.Register "BykUsbCom.dll", "BYKCom_ListDevices", "i=sll", "r=l"' подключение к обертке конечной библиотеки и объявление одной из ее функций + типы и количество параметров, которые принимает функция + тип возвращаемого функцией значения
result = String(2000, ChrB(0))'Chr(0), ChrW(0) тоже самое
MaxResult = 2000
Written = 0
r = DX.BYKCom_ListDevices(result, MaxResult, Written)
VBS в проблемной строке возвращает пустую строку, что на мой взгляд логично
После чего при попытке вызвать функцию конечной библиотеки с передачей вышеописанных параметров вываливается ошибка runtime error (запускаю в SHIC)
То есть в VBA String(2000, 0) возвращает строку в юникоде(вроде) с пустыми символами, а VBS просто пустую строку, как получить аналогичный VBA результат?
Или может изначально не правильно делаю? Смысл в том что "конечная" библиотека работает с "девайсом", получает значения из его памяти. Есть рабочая программа, сделанная в экселе(добавляет полученные данные из девайса на лист эксель, приходится потом разбирать этот эксель и дергать из него данные через СОМобъекты, ADO и так далее(разные варианты пробовал)), но это жутко неудобно. Пробую перенести работу с девайсом в другую среду, используя VBS....
История запутанная конечно
но хочется разобраться