Einzelnen Beitrag anzeigen

kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#2

Re: PHP Array über Soap verarbeiten...

  Alt 31. Okt 2006, 09:41
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.
Florian Gilde
  Mit Zitat antworten Zitat