Ich habe eine "Dateien suchen" Funktion in meinem Programm, die Textdateien mit dem Suffix .ged findet, die mein Programm liest. Die gefundenen Ergebnisse werden in einem Explorer-ähnlichen Fenster angezeigt, das so aussieht:
Ich verwende die Standardmethoden FindFirst / FindNext, und dies funktioniert sehr schnell. Die oben gezeigten 584 Dateien werden innerhalb weniger Sekunden gefunden und angezeigt.
Was ich jetzt tun möchte, ist zwei Spalten zur Anzeige hinzuzufügen, die die "Quelle" und "Version" enthalten, die in jeder dieser Dateien enthalten sind. Diese Informationen befinden sich in der Regel in den ersten 10 Zeilen jeder Datei, auf Zeilen, die so aussehen:
1 SOUR FTM
2 VERS Family Tree Maker (20.0.0.368)
Ich habe kein Problem damit, dies sehr schnell selbst zu analysieren, und das ist nicht, was ich frage.
Was ich Hilfe benötige, ist einfach, wie ich die ersten 10 oder so Zeilen aus diesen Dateien am schnellsten laden kann, damit ich sie analysieren kann.
Ich habe versucht, ein StringList.LoadFromFile zu verwenden, aber es dauert zu lange, um die großen Dateien zu laden, wie diejenigen über 1 MB.
Da ich nur die ersten 10 Zeilen oder so benötige, wie könnte ich am besten an sie herankommen?
Ich verwende Delphi 2009, und meine Eingabedateien können Unicode sein oder auch nicht, daher muss dies für jede Codierung funktionieren.
Nachfrage: Danke Antonio,
Ich habe schließlich das hier gemacht, das gut funktioniert:
var
CurFileStream: TStream;
Buffer: TBytes;
Value: string;
Encoding: TEncoding;
try
CurFileStream := TFileStream.Create(folder + FileName, fmOpenRead);
SetLength(Buffer, 256);
CurFileStream.Read(Buffer[0], 256);
TEncoding.GetBufferEncoding(Buffer, Encoding);
Value := Encoding.GetString(Buffer);
...
(analysiere Value, um das zu erhalten, was ich will)
...
finally
CurFileStream.Free;
end;