Тема: Delphi 7 и Ole
Показать сообщение отдельно
  #1  
Старый 12.01.2017, 16:47
TheSelector TheSelector вне форума
Прохожий
 
Регистрация: 12.01.2017
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Delphi 7 и Ole

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