Große Textdateien einlesen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
DIDI01
Beiträge: 3
Registriert: Mo 27. Okt 2008, 22:06

Große Textdateien einlesen

Beitrag von DIDI01 »

Hallo an alle,

ich habe 21 Textdateien die jede ca 100 000 Zeilen hat,
jede Zeile besteht aus 10 einzelnen Einträgen die mit ";" getrennt sind.

Wie schaffe ich es diese Dateien einzulesen, anzuzeigen und nach einzelen Einträgen zufiltern .

Ein einlesen in eine TMemo dauert bei mir pro Datei ca 40 sec. , jedoch habe ich es noch nicht geschaft in der Komponete nach einem Eintrag zufiltern.

Ich bin für jede Anregung dankbar.

Gruß DIDI01

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Große Textdateien einlesen

Beitrag von Christian »

Bei den grössenordnungen macht es sinn eine datenbank zu verwenden sqlite bringt hier schon enorme geschwindigkeitsunterschiede beim filtern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Große Textdateien einlesen

Beitrag von creed steiger »

Vielleicht findest du hier einige Anregungen:

http://www.mail-archive.com/fpc-pascal@ ... 09820.html" onclick="window.open(this.href);return false;

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Große Textdateien einlesen

Beitrag von theo »

Ein TSdfDataSet auf das File ansetzen wäre eine einfache Möglichkeit.
Eigenschaft Delimiter auf ';' und Filtered auf True.
Anzeigen via TDatasource in einem TDBGrid.

In OnFilterRecord kann man sowas machen:

Code: Alles auswählen

procedure TForm1.SdfDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept:=Dataset.Fields[0].AsString='Aha';
end;

DIDI01
Beiträge: 3
Registriert: Mo 27. Okt 2008, 22:06

Re: Große Textdateien einlesen

Beitrag von DIDI01 »

Hallo zusammen,

vielen Dank für eure Tips. (Das ging ja schnell)
Ich werde mich mit den Vorschlägen von euch beschäftigen und mich wieder melden.

Gruß DIDI01

DIDI01
Beiträge: 3
Registriert: Mo 27. Okt 2008, 22:06

Re: Große Textdateien einlesen

Beitrag von DIDI01 »

Hallo, so da bin ich wieder.

Ich habe mich mit den Vorschlägen von euch beschäftigt und komme von einem Problem zum anderen.

@Christian, Ich finde zwar einige Dateien auf der Webseite aber welche und wie muß ich die Installieren ?

@Theo, Deine Möglichkeit war bisher die erfogreichste. Ich habe es geschaft die Dateien einzulesen und zu filtern, jedoch schaffe ich es nicht die Dateien zur Laufzeit mit einem edit.text zu filtern. Kannst du mir da die Richtung zeigen wie das geht?.

Danke nochmals
Gruß DIDI01

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: Große Textdateien einlesen

Beitrag von theo »

Versteh deine Frage nicht ganz. Aber warscheinlich muss dir ein DB Spezialist antworten. Ich kenn mich da nicht so aus.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Große Textdateien einlesen

Beitrag von Christian »

Was willst du denn installieren ? sqlite ? da brauchst du nur die dll unter windows unter linux installierst du einfach die packages aus dem paketmanagement
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten