Entwickler-Ecke
Internet / Netzwerk - PHP Array mit idHTTP an Delphi übergeben ?
OliverN_26 - Fr 15.11.13 12:24
Titel: PHP Array mit idHTTP an Delphi übergeben ?
Hallo
Wie kann ich ein in PHP existierendes Array so an Delphi übergeben, dass ich nachher in Delphi einfach auf die entsprechenden Werte zugreifen kann?
Ich probier mir da grad nen Wolf und hab mich glaub ich in eine komplett falsche Richtung bewegt.
PHP
PHP-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| $zaehler = 0; $service = array(); $result = mysql_query("SELECT * FROM sk_schnittstelle_historie ORDER BY umschh_id ASC"); while($felder = mysql_fetch_assoc($result)) { $service[$zaehler]['id'] = $felder['umschh_id']; $service[$zaehler]['aufgabe'] = $felder['umschh_aufgabe']; $service[$zaehler]['kurztext'] = utf8_encode($felder['umschh_text']); $service[$zaehler]['text'] = utf8_encode($felder['umschh_beschreibung']); $zaehler++; } echo json_encode($service); |
DELPHI
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Services_laden; var sl : TStringList; data : Array[0..25] of String; begin sl := TStringlist.Create; sl.Add('Merker=87');
try data := IdHTTP1.Post('http://' + Hostname + '/mds/dp/sql/select.php',sl); showmessage(data[0]); except Exit; end;
sl.Free; end; |
Vielen Dank für jede Hilfe.
lg
Oliver
OliverN_26 - Fr 15.11.13 12:59
Hallo
Leider nicht, da mir die Übergabe von Variablen klar ist.
Mein Ziel das PHP Array so nach Delphi zu übertragen dass ich die jeweiligen Zeilen/Felder entsprechend anspringen kann .. und genau da ist mein Problem.
Ich weiß wie ich ein Array erstelle/anspreche in PHP und Delphi einzeln. Wie ich Variablen von PHP nach Delphi bekomme weiß ich auch .. nur halt nicht wie das mit einem Array funktionieren soll.
Lemmy - Fr 15.11.13 13:01
hi,
da sollte doch JSON das richtige Format sein.... Mit XE5 lässt sich das auch recht schmerzfrei verarbeiten, für andere Versionen gibts auch Implementierungen von Fremdherstellern....
OliverN_26 - Fr 15.11.13 13:04
Ich denke auch dass ich auf PHP Seite nichts mehr ändern muß und JSON der richtige Weg ist.
Wie aber empfange ich den PHP-Request mit Delphi? Ich hab das Gefühl das ist letztendlich immer ein String. Irgendwie muß ich doch nachher die einzelnen Felder anspringen können?
OliverN_26 - Fr 15.11.13 14:22
Nun ja .. ich nutze Delphi 7 Enterprise .. hättest du evt ein Beispiel für einen Fremdanbieter?
OliverN_26 - Fr 15.11.13 17:08
SuperObject hab ich auch gefunden und da jeder schreibt es wäre so einfach hab ich mir die letzten 2 Stunden daran die Zähne zerbissen, da ich immer eine "Integer Überlauf" Exception bekomme.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.Services_laden; var sl : TStringList; OB : ISuperObject; i : integer; begin sl := TStringlist.Create; sl.Add('Merker=87');
try OB := SO(IdHTTP1.Post('http://' + Hostname + '/mds/dp/sql/select.php',sl)); for i := 0 to OB.AsArray.Length - 1 do ShowMessage(OB.AsArray[i].S['text']); except Exit; end;
sl.Free; end; |
In die Funktion (an die markierte Stelle) springt er in der superobject.pas
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| class function TSuperAvlEntry.Hash(const k: SOString): Cardinal; var h: cardinal; i: Integer; begin h := 0; {$Q-} for i := 1 to Length(k) do h := h*129 + ord(k[i]) + $9e370001; {$Q+} Result := h; end; |
OliverN_26 - Fr 15.11.13 17:16
JSON Rückgabe sieht übrigens so aus:
OliverN_26 - Fr 15.11.13 17:55
@iKilledKenny:
Mit in den Source geschriebenen Testdaten klappt es .. mit meiner JSON Rückgabe bekomm ich ne Exception 'Ungültige Typenumwandlung'.
Wobei ich denke dass "SuperObject" mehr das wäre wonach ich suche .. grad weils auch um Arrays geht. Scheint einfach ansprechbar zu sein .. wenns denn läuft :-(
Mein Kopf :-(
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!