Wenn man weiß das die Datei nicht zu groß ist, kann man auch die gesamte Datei auf einmal einlesen, so wie du es machst (zeichen für Zeichen) würde ich es schon mal auf gar keinen Fall machen, da das zu heftigen Performanceeinbußen auf HDD's führen kann. Das Betriebsystem versucht dabei den Pfad des lesekopfes für alle anstehenden anfragen zu Optimieren, wenn du jetzt ein zeichen nach einander liest wird der lesekopf immer wieder zu den selben blöcken geführt, welche zusammenhängend sind, allerdings ist zwischen den schritten so viel zeit das das OS an dieser Stelle oftmals andere Aufträge ausführt, welche den Lesekopf wieder bewegen. Wenn du allerdings große Blöcke auf einmal liest, so sieht das OS, das diese befehle auf nah beieinander liegende Regionen zugreift, und kann damit den Pfad des Lesekopfes gut optimieren.pluto hat geschrieben:TStringlist würde ich nicht nehmen, da sie immer erst die Datei komplett einlist und dann kann mit der Verarbeitung angefangen werden.
Mit TFileStream spart man sich das. Es ist auch nur geringfügig aufwendiger.
Und so HDD's sind echt nicht grade schnell, du kannst performanceeinbußen bis in den Millisekunden Bereich erhalten, was wenn man mal überlegt das die CPU irgendwo bei 2-3 GHz idled schon einen sehr großen unterschied macht.
Ansonsten wie gesagt, für solch einfache Konfigfiles, welche nur 2 verschiedene Typen von Tokens (Tags und Strings) verwendet, welche sich beide durch Reguläre Grammatik erzeugt werden können, kann man einfach eine Simple Lexikalische Analyse mittels DEA's oder entsprechend RegEx, welches auch DEA's verwendet (bzw verwenden sollte) ausführen. Ein solches Konstrukt mit verschiedenen Booleans kommt mir da doch viel zu kompliziert für vor