schade... hat da keiner ne gute idee?
also ich habe bei dem
WSDL tutorial bei delphi source folgenes gesehen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var gsp: GoogleSearchPort;
result: GoogleSearchResult;
i: integer;
rea: ResultElementArray;
begin
gsp:=GetGoogleSearchPort(true);
result:=gsp.doGoogleSearch('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', Edit1.Text,
0, 10, true, 'countryDE', false, 'lang_de', 'UTF-8', 'UTF-8');
if Assigned(result) then begin
Label1.Caption:=IntToStr(result.estimatedTotalResultsCount)+
' Ergebnisse';
Memo1.Clear;
rea:=result.resultElements;
for i:=0 to high(rea) do begin
Memo1.Lines.Add(rea[i].Title);
Memo1.Lines.Add(rea[i].URL);
Memo1.Lines.Add(rea[i].Summary);
Memo1.Lines.Add('');
end;
result.Free;
end;
end;
dort machen die es mit dem ResultElementArray, aber den typen gibt es ja bei mir nicht... also habe ich mir den Typ in meiner IData.pas erstellt:
Delphi-Quellcode:
ResultElement = class; { "urn:stryykeSoapServer" }
ResultElement = class(TRemotable)
private
FUserID: WideString;
FUserName: WideString;
Ffirstname: WideString;
Flastname: WideString;
Fcountry: WideString;
FOnline: Boolean;
Fcity: WideString;
public
published
property userid: WideString read FUserID write FUserID;
property UserName: WideString read FUserName write FUserName;
property firstname: WideString read Ffirstname write Ffirstname;
property lastname: WideString read Flastname write Flastname;
property country: WideString read Fcountry write Fcountry;
property Online: Boolean read FOnline write FOnline;
property city: WideString read Fcity write Fcity;
end;
ResultElementArray = array of ResultElement; { "urn:stryykeSoapServer" }
das PHP Array, welches zurück kommt ieht z.B so aus:
Code:
[0] => Array
(
[UserID] => 10000206
[UserName] => fluffy
[firstname] => Thomas
[lastname] => Memenga
[country] => DE
[city] => Springe
)
[1] => Array
(
[UserID] => 10000202
[UserName] => giri01
[Online] => 1
[firstname] => Rajiv
[lastname] => Giri
[country] => DE
[city] => Hamburg
)
[2] => Array
(
[UserID] => 10000203
[UserName] => giri02
[firstname] => Rajiv
[lastname] => Giri
[country] => DE
[city] => Hamburg
)
jetzt habe ich also bei der functions definition folgenes:
function getBuddyList(sessionID:string;status:string): ResultElementArray; stdcall;
und mein test aufruf sieht so aus:
Delphi-Quellcode:
var
buddys: ResultElementArray;
i:integer;
begin
buddys:=(SoapConnection1.GetSOAPServer as IDataMod).getBuddyList(sessionID,'all');
for i:=0 to high(buddys) do begin
Memo1.Lines.Add(buddys[i].UserName);
end;
end;
so die anzahl der schleife ist korrekt, und wird auch je nach dem wieviele buddys ich habe ausgeführt... (das ist ja schonma was)
leider ist der UserName irgendwie leer... ('') und ich weiß nicht wieso, bzw was ich jetzt dafür tun kann, damit dass jetzt mal vernünftig funktioniert.