AGB  ·  Datenschutz  ·  Impressum  







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

TJson.Format(..) fehlerhaft?

Ein Thema von Der schöne Günther · begonnen am 7. Jun 2017 · letzter Beitrag vom 8. Jun 2017
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TJson.Format(..) fehlerhaft?

  Alt 7. Jun 2017, 11:41
Delphi-Version: 10 Seattle
Im Bugtracker habe ich nichts gefunden, aber TJson.Format(..) ist zumindest in 10 Seattle kaputt. Kann das jemand mit Berlin/Tokyo immer noch bestätigen?

Button1 und Memo1 aufs Formular, dann
Delphi-Quellcode:
uses
  Rest.Json, System.Json;

{$R *.dfm}

procedure TForm17.Button1Click(Sender: TObject);
var
   objects: TArray<TObject>;
   arrayIndex: Integer;

   objectAsJson: TJsonValue;
   objectAsString: String;
begin
   objects := TArray<TObject>.Create(
      TObject.Create(),
      TObject.Create(),
      TObject.Create()
   );

   for arrayIndex := Low(objects) to High(objects) do
      begin
         objectAsJson := TJson.ObjectToJsonObject(objects[arrayIndex]);
         try
            objectAsString := TJson.Format(objectAsJson);
            Memo1.Lines.Append(objectAsString);
         finally
            objectAsJson.Destroy();
         end;
      end;
end;
TJson.Format liefert beim ersten mal {} , beim zweiten mal allerdings {}, {} und beim dritten mal {}, {}, {} .

Erwartet wäre drei mal {} Das liegt anscheinend daran dass in TJson.Format(..) (Rest.Json.pas) munter gesagt wird Result := Result + ... obwohl Result noch nie zugewiesen wurde. Wenn die Methode das zweite mal betreten wird ist Result noch mit dem Ergebnis des ersten Durchlaufs belegt.


Kann jemand prüfen ob das ab 10.1 Berlin und aufwärts immer noch auftritt?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TJson.Format(..) fehlerhaft?

  Alt 7. Jun 2017, 12:05
Code:
{
  }

{
  }
{
  }

{
  }
{
  }
{
  }
So siehts in Toyko aus.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: TJson.Format(..) fehlerhaft?

  Alt 7. Jun 2017, 15:17
Solche Fehler gibt es leider oftmals, wenn Funktionen in einer Schleife aufgerufen werden und das Result nicht ordnungsgemäß initialisiert wird, also zu Beginn ein Result := ''; .

Delphi gibt leider keine Warnung bei sowas aus, da gemanagte Typen automatisch initialisiert werden,
allerdingt macht der Compiler aus function Test(...): string; ein procedure Test(...; var Result: string); .
Die implizite "lokale" Variable beim Aufrufer, für das Funktions-Result, wurde ja mit '' initialisiert, allerdings trifft das nur für den ersten Schleifendurchlauf zu, aber initialisiert ist initialisiert womit es keine Warnung gibt.

Ich und auch Andere hatten schon mehrmals im QC darum gebeten, dass die "Variable wurde initialisiert"-Kennung für das Result von Funktionen zu Beginn der Funktion gelöscht wird, damit dieser Fehler endlich vom Compiler gemeldet werden kann ... tja, aber auf uns hört ja Niemand.
$2B or not $2B

Geändert von himitsu ( 7. Jun 2017 um 15:20 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: TJson.Format(..) fehlerhaft?

  Alt 7. Jun 2017, 15:45
Das ist nicht die einzige völlig Offensichtliche vor dem der Compiler warnen sollte. Aber was uns Delphi-Entwickler nicht umbringt macht uns nur härter...

Da das RAD Studio so billig ist kann man sich grade für so etwas getrost FixInsight dazu kaufen. Das ist wirklich gut und warnt bspw. auch vor genau so etwas.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TJson.Format(..) fehlerhaft?

  Alt 7. Jun 2017, 17:23
Falls jemand die Welt zu einem besseren Ort machen möchte wäre ein Vote im Bugtracker heute genau das richtige!

https://quality.embarcadero.com/browse/RSP-18300
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TJson.Format(..) fehlerhaft?

  Alt 8. Jun 2017, 09:28
Gevotet!
  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 01:00 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