AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Erzeugen und Freigeben von TJSONTextWriter wirklich so umständlich?
Thema durchsuchen
Ansicht
Themen-Optionen

Erzeugen und Freigeben von TJSONTextWriter wirklich so umständlich?

Ein Thema von Bbommel · begonnen am 20. Feb 2019 · letzter Beitrag vom 20. Feb 2019
Antwort Antwort
Schokohase
(Gast)

n/a Beiträge
 
#1

AW: Erzeugen und Freigeben von TJSONTextWriter wirklich so umständlich?

  Alt 20. Feb 2019, 09:11
So würde man es ja normalerweise machen:
Delphi-Quellcode:
function TmyClass.GetInfoAsJSON: string;
var
  jWriter: TJsonTextWriter;
  textWriter: TTextWriter;
begin
  textWriter := TStringWriter.Create;
  try
    jWriter:=TJsonTextWriter.Create(textWriter);
    try
      jWriter.WriteStartObject;
      jWriter.WritePropertyName('values');
      jWriter.WriteValue('wuppdi');
      jWriter.WriteEndObject;
      Result:=jWriter.Writer.ToString;
    finally
      jWriter.Free;
    end;
  finally
    textWriter.Free;
  end;
end;
oder alternativ auch so
Delphi-Quellcode:
function TmyClass.GetInfoAsJSON: string;
var
  jWriter: TJsonTextWriter;
  textWriter: TTextWriter;
begin
  jWriter := nil;
  textWriter := TStringWriter.Create;
  try
    jWriter:=TJsonTextWriter.Create(textWriter);
    jWriter.WriteStartObject;
    jWriter.WritePropertyName('values');
    jWriter.WriteValue('wuppdi');
    jWriter.WriteEndObject;
    Result:=jWriter.Writer.ToString;
  finally
    jWriter.Free;
    textWriter.Free;
  end;
end;
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
669 Beiträge
 
Delphi 12 Athens
 
#2

AW: Erzeugen und Freigeben von TJSONTextWriter wirklich so umständlich?

  Alt 20. Feb 2019, 09:17
Danke für die Rückmeldung, Schokohase. Das war das, was ich in meinem Beitrag mit "man kann sich den TextWriter auch beim Create merken" meinte - ist sicherlich die erstmal schönere Variante. Ich hatte halt jetzt schon soweit gebastelt, um dieses ganze Erzeugen und Freigaben nachher in Hilfsfunktionen (oder eine abgeleitete Klasse, mal sehen) auslagern zu können.

Aber meine eigentliche Frage hast du ja dann bestätigt: ja, es ist so, dass man immer beide Objekte braucht und tunlichst in der richtigen Reihenfolge freigeben muss.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#3

AW: Erzeugen und Freigeben von TJSONTextWriter wirklich so umständlich?

  Alt 20. Feb 2019, 09:37
Ich würde den Code sogar noch etwas weiter aufdröseln zu
Delphi-Quellcode:
function TmyClass.GetInfoAsJSON: string;
var
  jWriter: TJsonTextWriter;
  textWriter: TTextWriter;
begin
  textWriter := TStringWriter.Create;
  try
    // start write json
    jWriter:=TJsonTextWriter.Create(textWriter);
    try
      jWriter.WriteStartObject;
      jWriter.WritePropertyName('values');
      jWriter.WriteValue('wuppdi');
      jWriter.WriteEndObject;
    finally
      jWriter.Free;
    end;
    // end write json
    Result := textWriter.ToString;
  finally
    textWriter.Free;
  end;
end;
und nun sieht man, dass man diesen JSON-Write Kram auch in eine eigene Methode auslagern kann.
Delphi-Quellcode:
procedure TmyClass.WriteJSONInfo(const AWriter: TTextWriter);
begin
  jWriter:=TJsonTextWriter.Create(AWriter);
  try
    jWriter.WriteStartObject;
    jWriter.WritePropertyName('values');
    jWriter.WriteValue('wuppdi');
    jWriter.WriteEndObject;
  finally
    jWriter.Free;
  end;
end;

function TmyClass.GetInfoAsJSON: string;
var
  textWriter: TTextWriter;
begin
  textWriter := TStringWriter.Create;
  try
    WriteJSONInfo(textWriter);
    Result := textWriter.ToString;
  finally
    textWriter.Free;
  end;
end;
und schon sieht das wesentlich entzerrter aus und man kann jetzt jeden beliebigen TextWriter von aussen übergeben (zum Testen, zum ...)
  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 21:21 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