Autor Beitrag
NOS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 2

Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 10 - Seattle PRO
BeitragVerfasst: 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 user profile iconChristian S.: Typo im Titel behoben
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10092
Erhaltene Danke: 1208

W2k .. W7pro .. W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: NOS
NOS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 2

Win XP, Win Vista Ultimate, Win 7 Ultimate
Delphi 10 - Seattle PRO
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 381
Erhaltene Danke: 67

Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 127
Erhaltene Danke: 23

Windows 7
C#; Visual Studio 2015
BeitragVerfasst: 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



BeitragVerfasst: Sa 03.03.18 13:47 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1176
Erhaltene Danke: 94

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: 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.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: 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.

_________________
Oel ngati kameie.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 789
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180
Erhaltene Danke: 42



BeitragVerfasst: Mo 05.03.18 18:00 
Also ich speicher die Sachen immer in einer SQLite3 Datei.
Schnell und flexibel.