gpt4 book ai didi

delphi - Delphi中如何高效读取多个文件的前几行

转载 作者:行者123 更新时间:2023-12-03 14:49:32 24 4
gpt4 key购买 nike

我的程序中有一个“查找文件”功能,可以查找我的程序读取的带有 .ged 后缀的文本文件。我在类似资源管理器的窗口中显示找到的结果,如下所示:

enter image description here

我使用标准的 FindFirst/FindNext 方法,这工作得非常快。上面显示的 584 个文件会在几秒钟内找到并显示。

我现在想做的是将两列添加到显示中,显示每个文件中包含的“源”和“版本”。此信息通常位于每个文件的前 10 行,如下所示:

1 SOUR FTM
2 VERS Family Tree Maker (20.0.0.368)

现在我自己可以很快地解析这个问题,这不是我要问的。

我需要帮助的只是如何最快地加载这些文件中的前 10 行左右,以便我可以解析它们。

我尝试过执行 StringList.LoadFromFile,但加载大文件需要太多时间,例如 1 MB 以上的文件。

由于我只需要前 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;

最佳答案

使用 TFileStream 并通过 Read 方法读取所需的字节数。下面是读取也存储在文件开头的位图信息的示例。

http://www.delphidabbler.com/tips/19

关于delphi - Delphi中如何高效读取多个文件的前几行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com