Hallo an alle
Da ich mich noch nicht sehr lange mit der Programmierung in Delphi beschäftige, hätte ich eine Frage zu der Stringgrid Komponente.
Ich habe eine Datei die ca. 23MB (170.000 Zeilen) groß ist, und ich sollte diese Datei in einer Stringgrid Komponente importieren. Um in den einzelnen
Zeilen und Spalten nach bestimmten Zeichenfolgen zu suchen.
Die Datei wird so eingelesen:
****************************************
begin
Herbaliste := TStringlist.Create;
Herbaliste.LoadFromFile ('Herbalist.txt');
...
for i := 0 to Herbaliste.Count -1 do
begin
Herbatemp := Copy ( Herbaliste.Strings[i], 1, 9 );
SG_herba.Cells[1,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 10, 28 );
SG_herba.Cells[2,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 39, 8 );
SG_herba.Cells[3,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 49, 3 );
SG_herba.Cells[4,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 53, 6 );
SG_herba.Cells[5,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 60, 8 );
SG_herba.Cells[6,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 69, 8 );
SG_herba.Cells[7,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 78, 18 );
SG_herba.Cells[8,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 97, 25 );
SG_herba.Cells[9,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 123, 10 );
SG_herba.Cells[10,i] := HerbaTemp;
SG_Herba.RowCount := i +1;
end;
end;
...
***************************************
Um die ganze Datei einzulesen benötige ich aber sehr viel Zeit (ca. 4 Min)
und viel Speicher (ca. 180 MB Realer und/oder Virtueller Speicher)
Meine Frage: gibt es eine Möglichkeit diese Datei so einzulesen das der
bedarf an Zeit und Speicher (sollte auf einem P233 MMX und 32 MB Speicher laufen)
so gering wie möglich ist. Es sollte aber nicht mit der DBStringGrid Komponente
geschehen, da nur Textdatein mit Komma automatisch einlesen werden.
Die original Datei sollte auch nicht verändert werden.
Danke schon im voraus für die Hilfe
Da ich mich noch nicht sehr lange mit der Programmierung in Delphi beschäftige, hätte ich eine Frage zu der Stringgrid Komponente.
Ich habe eine Datei die ca. 23MB (170.000 Zeilen) groß ist, und ich sollte diese Datei in einer Stringgrid Komponente importieren. Um in den einzelnen
Zeilen und Spalten nach bestimmten Zeichenfolgen zu suchen.
Die Datei wird so eingelesen:
****************************************
begin
Herbaliste := TStringlist.Create;
Herbaliste.LoadFromFile ('Herbalist.txt');
...
for i := 0 to Herbaliste.Count -1 do
begin
Herbatemp := Copy ( Herbaliste.Strings[i], 1, 9 );
SG_herba.Cells[1,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 10, 28 );
SG_herba.Cells[2,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 39, 8 );
SG_herba.Cells[3,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 49, 3 );
SG_herba.Cells[4,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 53, 6 );
SG_herba.Cells[5,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 60, 8 );
SG_herba.Cells[6,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 69, 8 );
SG_herba.Cells[7,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 78, 18 );
SG_herba.Cells[8,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 97, 25 );
SG_herba.Cells[9,i] := HerbaTemp;
Herbatemp := Copy ( Herbaliste.Strings[i], 123, 10 );
SG_herba.Cells[10,i] := HerbaTemp;
SG_Herba.RowCount := i +1;
end;
end;
...
***************************************
Um die ganze Datei einzulesen benötige ich aber sehr viel Zeit (ca. 4 Min)
und viel Speicher (ca. 180 MB Realer und/oder Virtueller Speicher)
Meine Frage: gibt es eine Möglichkeit diese Datei so einzulesen das der
bedarf an Zeit und Speicher (sollte auf einem P233 MMX und 32 MB Speicher laufen)
so gering wie möglich ist. Es sollte aber nicht mit der DBStringGrid Komponente
geschehen, da nur Textdatein mit Komma automatisch einlesen werden.
Die original Datei sollte auch nicht verändert werden.
Danke schon im voraus für die Hilfe
Comment