Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Rückgabe-Typ anpassen? (https://www.delphipraxis.net/184480-rueckgabe-typ-anpassen.html)

Bernhard Geyer 3. Apr 2015 10:21

AW: Rückgabe-Typ anpassen?
 
Zitat:

Zitat von Popov (Beitrag 1296051)
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.

himitsu 3. Apr 2015 12:15

AW: Rückgabe-Typ anpassen?
 
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.

milos 4. Apr 2015 16:41

AW: Rückgabe-Typ anpassen?
 
Erstmal danke, dass ihr euch Zeit genommen habt um zu antworten.

Zitat:

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:

Zitat von himitsu
Zitat:

Zitat von milos (Beitrag 1296039)
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 :D
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.

Zitat:

Zitat von Popov (Beitrag 1296051)
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

himitsu 4. Apr 2015 20:21

AW: Rückgabe-Typ anpassen?
 
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.

milos 6. Apr 2015 08:59

AW: Rückgabe-Typ anpassen?
 
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:

Zitat von himitsu (Beitrag 1296196)
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 6. Apr 2015 10:13

AW: Rückgabe-Typ anpassen?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von himitsu (Beitrag 1296062)
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.

Zitat:

Zitat von milos (Beitrag 1296185)
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.

Leider doch nicht ganz... Generics haben mir da einen Strich durch die Rechnung gezogen :roll:


Habe gerade Delphi 5 und 7 meines Vaters ausgegraben und die Unit angepasst, damit Sie mit beiden läuft.
Das einzige was ich noch testen könnte wäre Delphi 3, habe ich jedoch nach einer Stunde suchen aufgegeben.

Delphi 5/7 Projektdateien angehängt.
Noch nicht fertig und keine garantie auf stabilität!

Edit: Sorry dachte wenn man antwortet wird es automatisch an den letzen Post gefügt.

himitsu 6. Apr 2015 13:05

AW: Rückgabe-Typ anpassen?
 
Och, früher sind wir ja auch ohne Generics ausgekommen. :-D


Pssst, du hast Null und das Array vergessen.
Array ist wie ein Objekt, nur mit anderen Klammern drumrum und ohne Name vor den Items.
Und "neben" Integer gibt es auch noch Float (Double), aber das ist einfach nur Delphi-Referenz durchsuchenFloatToStr und Delphi-Referenz durchsuchenStrToFloat mit einem
Delphi-Quellcode:
FormatSettings.DecimalSeparator:='.'
.

http://json.org

milos 6. Apr 2015 13:21

AW: Rückgabe-Typ anpassen?
 
Zitat:

Zitat von himitsu (Beitrag 1296343)
Pssst, du hast Null und das Array vergessen.
Array ist wie ein Objekt, nur mit anderen Klammern drumrum und ohne Name vor den Items.
Und "neben" Integer gibt es auch noch Float (Double), aber das ist einfach nur Delphi-Referenz durchsuchenFloatToStr und Delphi-Referenz durchsuchenStrToFloat mit einem
Delphi-Quellcode:
FormatSettings.DecimalSeparator:='.'
.

Danke, Float wäre mir jetzt nicht mehr in den Sinn gekommen ^^
Den Rest weiss ich schon, habe absichtlich betont das es nicht Fertig ist, war die ganze Nacht an einer Homepage und dem Json-Parser dran und wollte eigentlich schlafen gehen. Irgendwie lässt mich aber die (Delphianer-)Praxis nicht gehen :lol:

Zitat:

Zitat von himitsu (Beitrag 1296343)
Och, früher sind wir ja auch ohne Generics ausgekommen. :-D

Jaja, das waren noch Zeiten :D

Freundliche Grüsse

milos 6. Apr 2015 23:55

AW: Rückgabe-Typ anpassen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen vielen dank an alle helfer, vorallem himitsu.

Der Parser funktioniert nun schon ziemlich gut und ich kann mit ihm auch grössere Blöcke die ich zufällig im Internet rausgesucht habe erfolgreich verabeiten.

Ich habe eine kleine GUI geschrieben um die Struktur auszugeben. Wie man sieht wird bei neuen Objekten weiter rein gerückt.
Wie soll ich das bei Arrays machen? Bisher hab ich es so gemacht das der Inhalt als string angezeigt wird also: "[item0,item1]"

Arrays sind die gelben Felder.

Freundliche Grüsse


Zitat:

Zitat von milos (Beitrag 1296347)
..., war die ganze Nacht an einer Homepage und dem Json-Parser dran und wollte eigentlich schlafen gehen. Irgendwie lässt mich aber die (Delphianer-)Praxis nich gehen :lol:

Puhh das war mal ein marathon aber nun kann ich beruhigt schlafen bis ich in 6 Stunden aufwachen muss. YOLO :P

himitsu 7. Apr 2015 06:43

AW: Rückgabe-Typ anpassen?
 
Array = Objekt mit "leeren" Namen der Items.

Bei Objekten "müssen" die Variablen/Property eigentlich immer einen Namen haben und bei Arrays haben die Items keinen Namen. (quasi ein Leerstring)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.
Seite 2 von 3     12 3      

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