Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

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

Последний раз редактировалось TheSelector, 12.01.2017 в 16:53.
Ответить с цитированием
  #2  
Старый 12.01.2017, 20:04
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,052
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

попробуй:
Код:
res := EVatService.Login(WideString(''),0);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:23.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter