AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Dynamische Struktur in Typisierter Datei speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamische Struktur in Typisierter Datei speichern?

Ein Thema von draxo · begonnen am 30. Mär 2008 · letzter Beitrag vom 31. Mär 2008
 
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: Dynamische Struktur in Typisierter Datei speichern?

  Alt 31. Mär 2008, 00:55
Ich bin JSON-Neuling und habe mir gerade mal die Unit JSON näher angesehen angesehen. - Ich bin enttäuscht. Bei JSON geht es nicht darum Objekte zu serialisieren, sondern ein bestimmtes Format auszugeben und einzulesen. Alle zu speichernden Werte müssen zunächst separat an die "JSON-Objekte" übergeben werden. Diese kümmern sich dann "nur" darum, das JSON-Format auszugeben und einzulesen. Im Quelltext sieht das dann so aus:

Auszug aus der Unit JSON_Usage:
Delphi-Quellcode:
    my_object := TJsonObject.Create(json_type_object);
    with my_object.AsObject do
    begin
      Put('abc', TJsonObject.Create(12));
      Put('foo', TJsonObject.Create('bar'));
      Put('bool0', TJsonObject.Create(false));
      Put('bool1', TJsonObject.Create(true));
      Put('baz', TJsonObject.Create('bang'));
      Put('baz', TJsonObject.Create('fark'));
      Delete('baz');
      my_array.AddRef; // i will destroy it myself
      Put('arr', my_array);
    end;
    writeln('my_object=');
    if JsonFindFirst(my_object, ite) then
    repeat
      writeln(#9,ite.key,': ', ite.val.AsJson);
    until not JsonFindNext(ite);
    JsonFindClose(ite);
    writeln('my_object.AsJson=', my_object.AsJson);
Gerade selbsterklärend ist das nicht.

Im Vergleich dazu können beim Delphi-Streaming Komponenten einfach gespeichert werden:Stream.WriteComponent(Component); Beide Systeme haben ihre ganz eigenen Beschränkungen. Funktional bietet JSON gegenüber dem Delphi-Streaming jedoch keinen Vorteil, wenn es auf das Format nicht ankommt. Im Gegenteil: Die Typenlosigkeit (keine Typinformationen in den gespeicherten Daten) sehe ich als Manko in vielerlei Hinsicht. Mit dem Delphi-Streaming im Binärformat ließe sich die Eingangsfrage problemlos beantworten (Stichworte: TPersistent- und TComponent-Nachfahren, Published-Eigenschaften, TPersistent.DefineProperties, TReader und TWriter, TStream.WriteComponent und .ReadComponent). Leider sind die Funktionen ObjectBinaryToText (und entsprechend ObjectTextToBinary) nicht in der Lage mit selbsteingebrachten Eigenschaftswerten (DefineProperties) umzugehen. Kurz gesagt: Ein Text-Format dieser Werte ist mit Delphi-Boardmitteln dann nicht mehr möglich (was gerade mein Problem ist (#864216)). Leider kenne ich bisher kein System, welches dazu in der Lage wäre eine Objektliste (oder Komponentenliste) zu speichern und zu laden. Das muss man eben immernoch zu Fuß machen... Bei XML sieht das soweit nicht anders aus. Und für die DPCollection gilt dasselbe wie für das Delphi-Streaming auch, da sie die Delphi-Boardmittel nur kapselt.
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
 


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 00: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