Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by himitsu,
6. Dez 2017
Wenn die Daten in der Datei sortiert sind, dann muß man nicht vollständig lesen.
https://de.wikipedia.org/wiki/Bin%C3%A4re_Suche
- zur Mitte
- den Anfang des Blocks suchen
- schauen ob passend oder größer/kleiner
- wenn nicht passend, dann zur Mitte des Blocks davor oder dahinter usw.
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by himitsu,
6. Dez 2017
aufbauen :zwinker:
Am Anfang einmal die Datei durchlaufen und in 'ner Liste das speichern (TStringList/TDictionary<>/...)
Es kommt vorallem darauf an wie oft er in dieser Datei was sucht.
Man kann den Inhalt auch in eine Datenbank schieben und dort weiterarbeiten.
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by himitsu,
6. Dez 2017
Wenn der Inhalt sortiert ist, also in deinem Fall nach Namen, wenn du nach Namen suchen willst, dann kann man die Datei schon sehr schnell "überfliegen" und muß nicht alles lesen.
Man könnte sich vorher auch einen Index aufbauen, wo der Anfang jedes Datensatzes in einer Namensliste steht, um schnell zum gewünschten Datensatz springen zu können.
Vorallem wenn man mehrmals nacheinander sucht...
Forum: Algorithmen, Datenstrukturen und Klassendesign
FreePascal
by himitsu,
5. Dez 2017
Die alten Dateifunktionen ala ReadLn funktionieren immernoch, auch über 2GB hinaus, wenn man ausschließlich sequentiell liest.
Also falls dir "schnell" egal ist und es auch ruhig langsamer und einfach sein darf.
Es gibt hier auch mehrere Komponenten zu finden, welche die Datei stückchenweise in den Speicher laden können.
große Textdateien