![]() |
|
|
#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); |