AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabe-Typ anpassen?

Ein Thema von milos · begonnen am 30. Mär 2015 · letzter Beitrag vom 7. Apr 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Rückgabe-Typ anpassen?

  Alt 30. Mär 2015, 15:25
Ähm, du willst einen JSON-Parser erstellen oder benutzen?

Eigentlich gibt es schon genug JSON-Parser für Delphi ...

Im Übrigen sind die Kommentare nicht ganz korrekt:
Code:
{
  "id": 1, // integer
  "name": "Foo", // string
  "price": 123, // number
  "tags": [ // array
    "Bar", // array-item string
    "Eek" // array-item string
  ],
  "stock": { // object
    "warehouse": 300, // number
    "retail": 20      // number
  }
}
Zwingende Basis-Lektüre ist hier auch http://json.org
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (30. Mär 2015 um 15:37 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Rückgabe-Typ anpassen?

  Alt 3. Apr 2015, 10:03
Ähm, du willst einen JSON-Parser erstellen oder benutzen?

Eigentlich gibt es schon genug JSON-Parser für Delphi ...
Mal etwas OT. Ist die Aussage richtig? Als ich das letzte Mal auf die Idee kam mal JSON auszuprobieren, hat nichts, aber auch wirklich nichts mit Delphi 7 problemlos funktioniert. Irgendwann gab ich es auf. Gibt es inzwischen so große Auswahl, dass ich es erneut versuchen kann und der TE drauf verzichten kann etwas neues zu schreiben?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Rückgabe-Typ anpassen?

  Alt 3. Apr 2015, 10:21
Mal etwas OT. Ist die Aussage richtig? Als ich das letzte Mal auf die Idee kam mal JSON auszuprobieren, hat nichts, aber auch wirklich nichts mit Delphi 7 problemlos funktioniert. Irgendwann gab ich es auf. Gibt es inzwischen so große Auswahl, dass ich es erneut versuchen kann und der TE drauf verzichten kann etwas neues zu schreiben?
Es gibt schon eine größere Auswahl (Google nach: "JSON parser Delphi"). Ob diese halt auch noch bei einer 13 Jahre alten IDE funktionieren ist offen. Eine JSON-Komponenten zu schreiben wird einfacher sein wenn man mit der erweiterten RTTI schon einiges an Arbeit abnehmen lassen kann.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#4

AW: Rückgabe-Typ anpassen?

  Alt 3. Apr 2015, 12:15
Ob es mit Delphi 7 laufen wird ... mal sehn (die paar RTTI-Funktionen sollten sich abschalten lassen, auch wenn dann die De-Serialisierungsfunktionen fehlen würden)
Die Grundfunktionen meines Codes kommen ohne RTTI aus. (aber fertig ist er noch nicht, siehe Link in 3)
http://www.delphipraxis.net/184540-i...d-nextgen.html

Und der Code des TE wird garaniert auch mit D7 laufen, wenn fertig, denn von RTTI Und Co. ist da drin noch nix zu sehen.

Aber ja, es gibt bestimmt auch schon was Fertiges, was in Delphi 7 laufen würde.
Wie alt ist JSON eigentlich? Würde auf 2005 oder 2006 tippen und Delphi 7 ist aus dem Jahre 2002, aber wenn ein Code in Delphi 2006/2007 läuft, dann bestimmt auch in D7.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Apr 2015 um 12:18 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
510 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Rückgabe-Typ anpassen?

  Alt 4. Apr 2015, 16:41
Erstmal danke, dass ihr euch Zeit genommen habt um zu antworten.

Zitat von himitsu:
Dein Zurückgeben geht und man kann es auch so machen,
wobei es natrülich etwas doppelt gemoppelt ist, da der Compiler anhand der Signatur (die Typen der Parameter, aber nicht des Results) auch automatisch unterscheiden kann. (overload)
Hab den Code ein wenig verbessert:
http://pastebin.com/E4j8K961
PasteBin um zu viel Code auf der Seite zu vermeiden.
Den Tipp mit GetValue habe ich umgesetzt.

Zitat von himitsu:
Leider habe ich keine Ahnung wie ich damit nochmal ein ganzes Objekt oder Variable zurückgeben kann.
Was ist Variable?
War müde, meinte eigentlich Arrays
Aber wenn das so klappt wie ich es mir denke sollte es kein Problem sein.

Was ich nicht ganz verstehe ist, wie ich wieder ein ganzes Objekt zurück geben kann, denn TJsonValue kann TJsonNodes ja gar nicht kennen, wie kann ich dann ein GetValue für TJsonNodes machen der mir dann wieder ein ganzes Objekt zurück gibt?
Habe leider nicht ganz verstanden was du mit TMyObject usw gemeint hast.

Mal etwas OT. Ist die Aussage richtig? Als ich das letzte Mal auf die Idee kam mal JSON auszuprobieren, hat nichts, aber auch wirklich nichts mit Delphi 7 problemlos funktioniert. Irgendwann gab ich es auf. Gibt es inzwischen so große Auswahl, dass ich es erneut versuchen kann und der TE drauf verzichten kann etwas neues zu schreiben?
Ich schreibe diese Unit um einen (vorallem kleinen) simplen aber auch gut funktionierenden Json-Parser zu haben mit dem ich Schreiben und Lesen kann. Das es draussen im grossen, weiten Internet schon funktionierende und fertige Sachen gibt, bin ich mir durchaus bewusst, werde diese jedoch nicht benutzen. Wie himitsu schon erwähnt hat, sollte der Parser ohne Probleme in Delphi 7 funktionieren, da ich versuche auf Abhängikeiten die nicht gerade jeder so hat zu verzichten.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#6

AW: Rückgabe-Typ anpassen?

  Alt 4. Apr 2015, 20:21
forward declaration

http://docwiki.embarcadero.com/RADSt...en_und_Objekte
http://www.delphipraxis.net/101703-f...n-klassen.html

Zitat:
um zu viel Code auf der Seite zu vermeiden
Dateianhänge (PAS mit dem nötigen Teil des Quellcodes)
Wenn in paar Jahren mal jemand das selbe Problem hat, könnte der externe Code weg sein.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 4. Apr 2015 um 20:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
510 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Rückgabe-Typ anpassen?

  Alt 6. Apr 2015, 08:59
Danke.
Forward Deklarationen waren mir bekannt, jedoch habe ich, das letze mal als ich sie benutzen wollte, wohl einen Fehler gemacht und es hat nicht funktioniert wie ich wollte. Deswegen habe ich es diesmal gar nicht probiert.

Zitat:
um zu viel Code auf der Seite zu vermeiden
Dateianhänge (PAS mit dem nötigen Teil des Quellcodes)
Wenn in paar Jahren mal jemand das selbe Problem hat, könnte der externe Code weg sein.
Habe den Parser neu geschrieben und nun können auch ganze Objekte wieder zurückgegeben werden.
Der Code sollte in ein paar Tagen hier veröffentlicht werden.

Momentan ist es noch ein bisschen umständlich:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
format: string;
child : TJsonObject;
int : integer;
begin
  Json := TJsonObject.Create;
  Json.Parse(mmo1.Text);
  Json.Format(mmo1.Text, format);
  mmo1.Text := format;

  child := TJsonObject.Create;

  Json['obj'].GetValue(child);
  child['id'].GetValue(int);

  showmessage(IntTostr(int));
end;
Code:
{
  "id": 1,
  "age": 18,
  "name": "Milos",
  "url": "http://delphipraxis.net",
  "valid": true,
  "obj": {
    "id": 6,
    "test": true
  }
}
Falls Interesse am bisherigen Code steht, einfach nachfragen.

Freundliche Grüsse
Milos
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz