【发布时间】:2012-04-02 20:04:10
【问题描述】:
我的应用程序缓慢地读取浮点数的 TextFile。有时情况会发生变化,必须重写文件。一些示例代码:
procedure TAMI_Column_Selector.read_continuously (file_name: string);
var infile: TextFile;
f: Double;
begin
AssignFile (infile, file_name);
Reset (infile);
try
while not EOF (infile) do
begin
Read (infile, f);
process (f); // this may take quite some time, seconds or even minutes
end; // while
finally
CloseFile (infile);
end; // try..finally
end; // read_continuously //
我怎样才能写出一个可以读取的文件?更具体地说:
- 我怎样才能写一个可以读取的文件?
- 当应用程序尝试读取当时的文件时如何防止崩溃 正在编写中
- 我的应用程序如何知道文件已被重写?
我想我可以解决第一个问题,将文件读入内存并读取(是否有可以写入内存和从内存读取的 TextFile)?然后仍然是我如何测试文件已被覆盖。
谁有这个问题的(优雅的)解决方案?
提前致谢。
在 Windows 7 上使用 Delphi XE
【问题讨论】:
-
使您的阅读程序对不完整的阅读具有鲁棒性。然后使用现代 IO(即
TFileStream)而不是 Pascal IO。当您打开文件时,请为您的作者指定fmShareDenyWrite。为您的读者指定fmShareDenyNone。或者,使用数据库! -
我描述的情况是一个导入工具,所以我使用 csv-files。数据库可以解决所有问题,但在这种情况下是不可行的。