Здравствуйте!
Есть старый код на 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 отстал от жизни? Буду благодарен за советы.