Entwickler-Ecke

Dateizugriff - Datei schnell parsen


woully - Do 15.09.11 15:16
Titel: Datei schnell parsen
Hi,

ich will eine Textdatei(logfile) einlesen mit > 600 MB.
Ich will nun eine Text Suchfunktion entwicklen die bestimmter Text in den eingelesenen Daten sucht.

Wie geh ich am besten vor, damit ich eine Schnelle suche habe.

Ich denke Die Datei in eine TStrinlist einzulesen, und danach Zeile für Zeile durchzuparsen kann ich vergesen.

Danke.


Narses - Do 15.09.11 16:24

Moin!

Guckst du hier [http://www.delphi-forum.de/viewtopic.php?t=99933&highlight=memory+mapped+files], vielleicht hilft das ja weiter. :les: :idea: ;)

cu
Narses


woully - Do 15.09.11 17:02

Hi Narses,

Supi, das geht ja flot!!!
Danke erstmal.

Und nun d'nächste Frage.
Gibt es eine möglichkeit den eingelesenen Text Schnell auf einer Komponente anzuzeigen ?

z.B, Meine Textsuche findet keinen Treffer, Also müsste ich die vollständige Datei anzeigen!!!!
TMemo, TRichedit,.. ist ja da A.. langsam bei String verarbeitung.
Kennst du eine Komponente die ich verwenden könnte ?.

Gruß


Narses - Do 15.09.11 18:36

Moin!

user profile iconwoully hat folgendes geschrieben Zum zitierten Posting springen:
z.B, Meine Textsuche findet keinen Treffer, Also müsste ich die vollständige Datei anzeigen!!!!
TMemo, TRichedit,.. ist ja da A.. langsam bei String verarbeitung.
Kennst du eine Komponente die ich verwenden könnte ?.
Tja, wenn du den gesamten Text anzeigen willst, dann wird´s schwer, das schnell zu tun... :? Aber, ehrlich gesagt, bei so einem Log zeigt mir auch UltraEdit hier nicht in 1 Sekunde alles an, das geht auch IMHO nicht... :nixweiss:

Kurz: Nein, keine Ahnung. TMemo nehmen und hoffen, dass es nicht soo lange dauert. :|

cu
Narses


jaenicke - Do 15.09.11 18:55

Zeige einfach nur einen Teil des Textes an...

Du kannst einen Scrollbalken machen, der nach Byteposition scrollt. Dann nimmst du eine MMF wie ich in der verlinkten Unit. aus dieser MMF kannst du dann jeweils den aktuellen Text auslesen und anzeigen.
So kannst du die Datei innerhalb von Millisekunden laden und durchscrollen. Ein Beispiel ist dafür der Hexeditor HxD, der macht das im Prinzip genauso.


woully - Fr 16.09.11 08:08

Moin,

klar, TMemo will ich gleich gar nicht probieren...In der lade Zeit könnte warscheinlich essen gehen...
Das mit der MMF scheint eine saubere Lösung zu sein. Ich setze es mal um.

Danke