Entwickler-Ecke

Dateizugriff - Welches Dateiformat nutzt ihr für eure AppSettings?


NOS - Fr 02.03.18 10:45
Titel: Welches Dateiformat nutzt ihr für eure AppSettings?
Hallo zusammen,

meine Software ist über die Jahre gewachsen und der Ladevorgang der Settings ist schon etwas länger geworden ... da ich auch Listen in den Settings habe stelle ich fest dass die Speicherung in einer INI Datei schon sehr langsam ist.

Nun würde ich gern wissen wie ihr eure Settings speichert und ob es eventuell sogar spezielle Compos für sowas gibt.

Grüße ins Forum,

Andreas

Moderiert von user profile iconChristian S.: Typo im Titel behoben


Narses - Fr 02.03.18 11:20

Moin!

user profile iconNOS hat folgendes geschrieben Zum zitierten Posting springen:
die Speicherung in einer INI Datei schon sehr langsam ist.
Du verwendest TMemIniFile? Das sollte eigentlich relativ schnell sein... :gruebel: (Oder nimmst du noch TIniFile?! :shock:)

XML geht auch, warum nicht. Man handelt sich damit aber auch diverse andere Probleme ein. Ganz soo schlecht, wie man INI immer wieder mal wahrnimmt, ist das gar nicht. Und in Punkto Performance sollte XML auch nicht grade ganz vorne liegen. :nixweiss:

cu
Narses


NOS - Fr 02.03.18 11:29

Hallo Narses,

ich nutze noch das "alte" INIFile .. am schnellsten sind Listen mit gleicher Blockgröße die ich als Records in einem Filestream schreibe ... sowas ist ja leider bei normalen Settings nicht wirklich machbar ... vielleicht sollte ich mal auf TMemINIFile umstellen :-)

Mein Traum wäre ein Object oder ne Compo wo ich die Variablen in eine Struktur lege und diese dann automatisch über einen filestream in eine datei schreibt :-)

Thanks,

Andreas


Symbroson - Fr 02.03.18 13:43

Ich finde ja json am bequemsten. Das kann man auch problemlos selber machen


doublecross - Fr 02.03.18 14:37

Hi,

es kommt ganz auf das Programm an. In der Regel bevorzuge ich XML, da es sehr Flexibel (auch dank der Baunstruktur und Attributen) ist aber gleichzeitig noch lesbar bleibt, falls da mal jemand per Hand ran muss.
Aber Narses hat recht, so schlecht sind INIs nicht, wenn ich aber an meine frühen Projekte zurückdenke kann ich das von TIniFile nicht behaupten. Wenn ich mich recht entsinne schreibt es nämlich jedes mal, wenn du eine wert veränderst auf die Platte, wenn du also alle deine Settings durchittterierst, und setzt, dann schreibst du für jeden Einstellungspunkt einmal die komplette Datei, dass das langsam wird wundert mich gar nicht. Dann gar es bei tIniFile glaube ich noch eine recht greringe Maximalgroße für die INI-Datei. Beides in Kombination führte bei mir sehr schnell dazu tMemIniFile zu verwenden. Dort muss du zwar durch den Aufruf von UpdateFile immer selber sagen, wann die Datei geschrieben werden soll, aber dafür wird das auch nur in diesem Fall gemacht (idealerweise also nur 1x, auch wenn du alle einstellungen veränderst) und die Größenbeschränkung der Datei fällt auch. Von dem UpdateFile einmal abgesehen wird es aber genauso verwendet wir tIniFile, so dass es ein leichtes sein sollte dein Programm darauf umzustellen. Dein Problem müsste das auf jeden Fall beheben.


Delete - Sa 03.03.18 13:47

- Nachträglich durch die Entwickler-Ecke gelöscht -


Sinspin - Sa 03.03.18 16:28

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
mir schwebt gerade eine Idee vor, eine XML-Klasse zu erstellen, die ähnlich aufgebaut sein wird, wie die INI-Klasse....

Das habe ich mir vor ein paar Jahren mal angetan. Verwende ich noch immer fuer einfache Sachen.
Fuer alles andere verwende ich "single file" Datenbanken oder eine Tabelle die ich einfach aus einer CSV Datei laden kann.


Delete - Sa 03.03.18 19:17

- Nachträglich durch die Entwickler-Ecke gelöscht -


Gausi - So 04.03.18 14:49

Für normale Einstellungen (Optionen, Fensterpositionen etc.) nutze ich TMemIniFile. Wenn längere Datensätze dazukommen, insbesondere Listen mit beliebiger Länge (d.h. der User kann beliebig Elemente hinzufügen), kommen diese Daten in eine weitere Datei mit einem dafür zugeschnittenen "Format".

Da mach ich dann oft einfach ein StringList.LoadFromFile und parse die schnell (d.h. ohne viel Code-Aufwand) selber. Entweder ein Item pro Zeile, ggf. in einem CSV-Format mit einem geeigneten Separator, oder pro String/Integer/etc. eine Zeile.


Lemmy - Mo 05.03.18 08:37

denkbar wäre auch JSON - vor allem wenn die Settings schon "fertig" in einer Delphi-Klasse zur Verfügung stehen. Sollte vermutlich auch nicht ganz langsam sein


Tankard - Mo 05.03.18 18:00

Also ich speicher die Sachen immer in einer SQLite3 Datei.
Schnell und flexibel.