Re[2]: Delphi 7 + SOAP
От: Den1974  
Дата: 28.10.05 07:06
Оценка:
Здравствуйте, Shtirliz, Вы писали:

S>Я работал с SOAP в Delphi. Все замечательно.


S>Что значит комплексный тип? Покажи что за тип и как ты его передаешь.


Есть скалярные типы (простые типы): integer, byte, string и т.д. А комплексные это например записи. В документации сказано, что для передачи комрлексных (complex) типов нужно создавать потомка от TRematable. Так и делаем:

TCurrency = class(TRemotable)
private
FExchangeRate: double;
FName: string;
public
property ExchangeRate: Double read FExchangeRate write FExchangeRate;
property Name: string read FName write FName;
end;

Потом на сервере пишем функцию, которая принимает в параметрах этот тип и должна обратно его вернуть:

function TCentimeterInch.GetCurrency(const aCurrency: TCurrency): TCurrency;
begin
Result:=aCurrency;
end;

На клиенте делаем запрос:

procedure TForm1.bGetCurrencyClick(Sender: TObject);
var aCurrency, c: TCurrency;
begin
aCurrency:=TCurrency.Create;
{ с:=TCurrency.Create; }
c:=(HTTPRIO1 as ICentimeterInch).GetCurrency(aCurrency);
Caption:=Format('name = %s, excangerate = %f',[c.Name,c.ExchangeRate]);
aCurrency.Free;
end;

после вызова функции переменная "с" равна nil, Даже если раскомментировать вторую строку, все равно после вызова функции переменная "с" равна nil.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.