У меня есть функция «Найти файлы» в моей программе, которая будет находить текстовые файлы с суффиксом .ged, которые читает моя программа. Я отображаю найденные результаты в окне, похожем на проводник, которое выглядит следующим образом:
Я использую стандартные методы FindFirst / FindNext, и они работают очень быстро. 584 файла, показанные выше, найдены и отображены в течение нескольких секунд.
Теперь я хотел бы добавить на дисплей два столбца, которые показывают «Источник» и «Версия», содержащиеся в каждом из них. файлы. Эта информация обычно находится в первых 10 строках каждого файла, в строках, которые выглядят так:
1 SOUR FTM
2 VERS Family Tree Maker (20.0.0.368)
Теперь у меня нет проблем с очень быстрым синтаксическим анализом, и я не об этом прошу.
В чем мне нужна помощь, так это просто в том, как наиболее быстро загрузить первые 10 или около того строк из этих файлов, чтобы я мог их проанализировать.
Я пытался выполнить StringList.LoadFromFile, но это занимает слишком много времени загрузка больших файлов, например, размером более 1 МБ.
Поскольку мне нужны только первые 10 строк или около того, как мне их получить?
Я использую Delphi 2009, и мои входные файлы могут быть или не быть Unicode, поэтому это должно работать для любой кодировки .
Продолжение: Спасибо, Антонио,
В итоге я сделал это, и он отлично работает:
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);
...
(parse through Value to get what I want)
...
finally
CurFileStream.Free;
end;