Добрый день, есть кусок куда в VBA нужно сделать то-же самое но в делфи, подскажите как.
з.ы. сам объект на другом компутере
'Вызов и формирование объекта интерфейсаDim obj As Object
Dim Person As String, ClientID As String, RequestID As String
On Error Resume NextSet obj = CreateObject("MYDCOMServer.MYServer")'Создание объектаIf Not IsObject(obj) Then
MsgBox"Модуль интерфейса не установлен или установлен неправильно", vbInformation
Score = False
Set obj = Nothing'Освобождение памяти от объекта интерфейсаExit Function
Else
Person = "AA"
ClientID = ""'Параметр зарезервирован для будущих версий
RequestID = ""'Параметр зарезервирован для будущих версийCall obj.Scoring(ClientID, RequestID, Person, seminputstring, semoutputstring)'Вызов метода объекта
Написал так:
var
fScoring : OleVariant;
fTmpStr: String ;
begin
fScoring := CreateOleObject('MYDCOMServer.MYServer');
try
fScoring.Scoring('', '', 'AA', '', '1', fTmpStr) ;
finally
fScoring := UnAssigned ;
end ;
end;
Однако при выполнении строки fScoring.Scoring('', '', 'AA', '', fTmpStr) ;
происходит эксепшен с сообщение "Разрушительный сбой"
Re: Как сделать в делфи такое (код VBA, вызов COM)
Здравствуйте, kavlad, Вы писали:
K>Здравствуйте, Hegemon, Вы писали:
K>Вообще-то AnsiString не может быть передан как параметр матода COM-объекта. Паскалевский String надо преобразовать в WideString. K>Смотри в сторону
K>
А ты что в последнем параметре передаешь?! Строку?
var
fScoring, Res : OleVariant;
fTmpStr: String ;
begin
fScoring := CreateOleObject('MYDCOMServer.MYServer');
fScoring.Scoring('', '', 'AA', '', Res) ;
end;
И, разумеется, примечание:
1. Кто сказал, что Delphi не может сама преобразовать строку в WideString?! Все нормально делается
2. При выходе интерфейса из области видимости он также освобождается, unassigned присваивать не надо (но можно, если очень хочется)
Re[9]: Как сделать в делфи такое (код VBA, вызов COM)
Здравствуйте, Romkin, Вы писали: R>И, разумеется, примечание: R>1. Кто сказал, что Delphi не может сама преобразовать строку в WideString?! Все нормально делается R>2. При выходе интерфейса из области видимости он также освобождается, unassigned присваивать не надо (но можно, если очень хочется)
Мля оказывается надо было правильно заполнить 4 параметр