【发布时间】:2022-11-10 17:53:15
【问题描述】:
我正在尝试在现有 .txt 文件中的一定数量的条目之后创建一个新的 .txt 文件。例如,我想在我的文件中有 50 个条目,然后,我想创建一个新文件,并且这些条目在该新文件中继续存在。假设我不希望我的日志文件被很多行填充,而是有更多的 .txt 文件来划分条目。
这是我的示例代码:
procedure TForm1.Button3Click(Sender: TObject);
function CountRows(Afilename: string): integer;
var
f: TextFile;
i: integer;
begin
assignfile(f, afilename);
reset(f);
result := 0;
while not eof(f) do
begin
readln(f);
inc(result);
end;
closefile(f);
end;
var
f: TextFile;
fileName: String;
fs: Tformatsettings;
begin
fs.shortdateformat := 'DD.MM.YYYY';
fs.TimeSeparator := ':';
filename := 'D:\LogLprf\LogLpFr ' + Datetostr(now, fs) + '.txt';
assignfile(f, filename);
if FileExists(filename) then
begin
if CountRows(filename)>=2 then
begin
filename := 'D:\LogLprf\LogLpFr ' + Datetostr(now, fs) +'1.txt';
assignfile(f, filename);
rewrite(f);
end
else
append(f);
end
else
begin
rewrite(f);
end;
fs.ShortDateFormat := 'DD.MM.YYYY HH:mm:ss';
Writeln(f, datetimetostr(now, fs)+'- '+'Some error...');
closefile(f);
end;
使用上面的代码,我设法创建第一个文件并在第一个文件中达到条目限制时创建第二个文件。但是,第二个文件每次都会重新创建。我知道那是因为我打电话给rewrite(f),但我需要在前一个文件的条目结束后创建一个新的 .txt 文件。我也尝试在CountRows(filename) 之后调用fileexists(filename),但这不是一个好的解决方案,因为我会有很多嵌套的 if 语句,如果我们需要创建大量 .txt 文件,这将无法解决问题。
我也尝试过循环,但这也不能解决问题。
欢迎提出任何建议...谢谢
【问题讨论】:
标签: delphi