Hallo,
| Dargor hat folgendes geschrieben: |
| Große Preisfrage: Welche Datei ist nun größer? |
Das ist aber ein entsprechend konstruiertes Beispiel.
1. Es ist Richtig das Typisierte Dateien mit Blöcken Arbeitet. D.h. für jeden Datensatz wird die Maximale größe belegt, auch wenn diese nicht ausgefüllt wird (wie bei kürzeren Strings). Ini Dateien speichern hingegen nur Tatsächliche Daten.
2. In Typisierten Dateien werden Zahöen auch als solche Abgelegt, ein LongInt ist also immer 4Byte groß, egal welcher Wert drinsteht. In einer INI-Datei werden die Daten immer als String gespeichert. Eine sechstellige Zahl belegt also auch 6 Byte, eine einstellige hingegen nur eins.
3. Zusätzlich zu den Nutzdaten werden in einer INI auch recht speicherintensive Verwaltungsinformationen gespeichet. Dies sind die Rubrikbezeichnungen, die Schlüssel und die dazugehörigen Begrenzungszeichen ([,],=).
4. Der Record bei Typisierten Dateien sollte immer mit dem Schlüsselwort
Packed versehen werden um auf größe Optimiert gespeichert zu werden.
5. Angenommen eine Datei hat 50.000 Einträge, der Zweite soll geändert werden.
a) Die Datei ist eine Typisierte Datei:
Die Daten werden an der entprechenden Stelle der Festplatte manipuliert. Die Struktur wird dadurch nicht verändert, da ja bereits ein Block mit der Maximalen Größe Existiert.
b) Die Datei ist eine INI.Datei:
Durch die Änderung der Daten verschiebt sich die Datenstruktur (denn die neuen Daten können ja länger oder kürzer sein) also muss die Datei ab dem zweiten Datensatz komplett neu geschrieben werden. Das ist wesentlich Resourcenaufwändiger.
6. Beim auslesen einer Typisierten Datei muss lediglich eine Feste Anzahl vom Bytes in eine Variable gleicher Größe Kopiert werden. Mit dieser Variable kann dann wie gewohnt gearbeitet werden.
Beim auslesen einer INI-Datei muss erst ein unter umständen lander Text durchsucht und Interpretiert (geparst) werden. Danach folgt unter umständen noch ein Typecasting um den dort gefundenen String in einen anderen Datentyp zu Konvertieren. Auch dies ist verhältnismäßig Recourcenaufwändig.
Ich will dier deine INI-Datei gar nicht Madig machen. Ich verwende sie auch gerne. Aber
effizient sind diese nun wirklich nicht. Sie sind nur unheimlich Konfortabel (so kann man hier häufig auf eine Versionskontrolle komplett verzichten).
Gruß
Klabautermann