如何在delphi中到达eof后插入新行

时间:2011-07-29 05:38:52

标签: delphi

在下面的代码中,我尝试在eof到达后添加一个新行,但在最后一行的末尾写入NULL。任何人都可以建议我。

If ( nImportPos > 0 ) then begin 
  nImportPos := FileWrite(fHandle, #13, length(#13)); 
  FileSeek(fhandle,0,2);
end; 

1 个答案:

答案 0 :(得分:0)

假设您正在写入ASCII或ANSI文件,那么我将按如下方式编写代码:

if nImportPos>0 then begin
  Assert(StringElementSize(sLineBreak)=1);
  nImportPos := FileWrite(fHandle, sLineBreak[1], Length(sLineBreak));
end;

备注:

  1. StringElementSize断言是为了证明假设,在下一行中,sLineBreak具有单字节字符元素。 sLineBreak的定义明确使用AnsiString。如果您的Delphi是pre-Unicode,则此行不会编译,您可以删除它。
  2. sLineBreak是将新行写入ASCII / ANSI文件的正确方法。在Windows上,它被定义为AnsiString(#13#10),即CR + LF对。在基于Unix的平台上,它被定义为AnsiString(#10),即单个LF。使用sLineBreak逻辑表达您正在做的事情,并让编译器处理实现。
  3. 由于FileSeek()将文件指针移动到FileWrite()写入的缓冲区的末尾,因此不需要调用FileWrite()