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
Seite 2 von 3     12 3      
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#11

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
43.167 Beiträge
 
Delphi 12 Athens
 
#12

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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)
508 Beiträge
 
Delphi 11 Alexandria
 
#13

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
43.167 Beiträge
 
Delphi 12 Athens
 
#14

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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)
508 Beiträge
 
Delphi 11 Alexandria
 
#15

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
Benutzerbild von milos
milos

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

AW: Rückgabe-Typ anpassen?

  Alt 6. Apr 2015, 10:13
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.
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


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.
Miniaturansicht angehängter Grafiken
tbup.jpeg  
Angehängte Dateien
Dateityp: zip JsonTest_R2_D5+7.zip (220,6 KB, 6x aufgerufen)
Milos

Geändert von milos ( 6. Apr 2015 um 10:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Rückgabe-Typ anpassen?

  Alt 6. Apr 2015, 13:05
Och, früher sind wir ja auch ohne Generics ausgekommen.


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 FormatSettings.DecimalSeparator:='.' .

http://json.org
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

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

AW: Rückgabe-Typ anpassen?

  Alt 6. Apr 2015, 13:21
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 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

Och, früher sind wir ja auch ohne Generics ausgekommen.
Jaja, das waren noch Zeiten

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

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

AW: Rückgabe-Typ anpassen?

  Alt 6. Apr 2015, 23:55
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


..., 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
Puhh das war mal ein marathon aber nun kann ich beruhigt schlafen bis ich in 6 Stunden aufwachen muss. YOLO
Miniaturansicht angehängter Grafiken
hh02.jpeg  
Milos

Geändert von milos ( 7. Apr 2015 um 00:20 Uhr) Grund: Gute nacht! :)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Rückgabe-Typ anpassen?

  Alt 7. Apr 2015, 06:43
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Apr 2015 um 06:49 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 08:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz