Autor |
Beitrag |
NOS
Beiträge: 183
Erhaltene Danke: 2
Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 19.4 - Sydney
|
Verfasst: Fr 02.03.18 10:45
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 Christian S.: Typo im Titel behoben
|
|
Narses
Beiträge: 10182
Erhaltene Danke: 1255
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 02.03.18 11:20
Moin!
NOS hat folgendes geschrieben : | die Speicherung in einer INI Datei schon sehr langsam ist. |
Du verwendest TMemIniFile? Das sollte eigentlich relativ schnell sein... (Oder nimmst du noch TIniFile?! )
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.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Für diesen Beitrag haben gedankt: NOS
|
|
NOS
Beiträge: 183
Erhaltene Danke: 2
Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 19.4 - Sydney
|
Verfasst: 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
Beiträge: 382
Erhaltene Danke: 67
Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
|
Verfasst: Fr 02.03.18 13:43
Ich finde ja json am bequemsten. Das kann man auch problemlos selber machen
_________________ most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
Für diesen Beitrag haben gedankt: NOS
|
|
doublecross
Beiträge: 149
Erhaltene Danke: 27
Windows 7
C#; Visual Studio 2015
|
Verfasst: 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.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 03.03.18 13:47
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Sinspin
Beiträge: 1332
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Sa 03.03.18 16:28
Frühlingsrolle hat folgendes geschrieben : | 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.
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 03.03.18 19:17
- Nachträglich durch die Entwickler-Ecke gelöscht -
Zuletzt bearbeitet von Frühlingsrolle am Di 06.03.18 08:53, insgesamt 6-mal bearbeitet
|
|
Gausi
Beiträge: 8538
Erhaltene Danke: 475
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: 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.
_________________ We are, we were and will not be.
|
|
Lemmy
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: 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
Beiträge: 217
Erhaltene Danke: 96
|
Verfasst: Mo 05.03.18 18:00
Also ich speicher die Sachen immer in einer SQLite3 Datei.
Schnell und flexibel.
|
|