Einzelnen Beitrag anzeigen

Der schöne Günther

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

TJson.Format(..) fehlerhaft?

  Alt 7. Jun 2017, 10: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