![]() |
|
|
#1
|
|||
|
|||
![]() Здравствуйте!
Есть старый код на Delphi 7. Его приходится сопровождать. Понадобилось добавить в код работу с достаточно свежим компонентом Activex. Вот фрагмент рабочего пример на VBS Код:
set EVatService = CreateObject("EInvVatService.Connector") if read_timeout <> "" then res = EVatService.SetServiceProperty( "connection.readTimeout", read_timeout, 0 ) if res <> 0 then WScript.Echo "Ошибка установки таймаута сетевого чтения: " & EVatService.LastError & " (Код 0x" & Hex(res) & ")" WScript.Quit end if end if compVersion = EVatService.Version res = EVatService.Login(connectStr, loginFlags) При переносе в Delphi 7 в таком виде ругается на недостаточность параметров, что логично. Код:
Var EVatService : OLEVariant; res : LongInt; begin EVatService := CreateOleObject('EInvVatService.Connector'); res := EVatService.Login; Описание функции из Dll Property Login(ConnectStr As String, Flags As Long) As Long read-only А в таком виде ругается "Член группы не найден." Код:
Var EVatService : OLEVariant; res : LongInt; begin if zesfid.Value = 0 then exit; EVatService := CreateOleObject('EInvVatService.Connector'); res := EVatService.Login('',0); ПРи чем методы без параметров отрабатывают без ошибок. Например Showmessage(EVatService.Version) - выводит версию сервиса как и должен. Я думаю тут какая то шляпа с тем, как передаются параметры в методы. Либо я что то делаю неверно, либо Delphi 7 отстал от жизни? Буду благодарен за советы. Последний раз редактировалось TheSelector, 12.01.2017 в 16:53. |
#2
|
|||
|
|||
![]() попробуй:
Код:
res := EVatService.Login(WideString(''),0); |