在下面的代码中,我尝试在eof到达后添加一个新行,但在最后一行的末尾写入NULL。任何人都可以建议我。
If ( nImportPos > 0 ) then begin
nImportPos := FileWrite(fHandle, #13, length(#13));
FileSeek(fhandle,0,2);
end;
答案 0 :(得分:0)
假设您正在写入ASCII或ANSI文件,那么我将按如下方式编写代码:
if nImportPos>0 then begin
Assert(StringElementSize(sLineBreak)=1);
nImportPos := FileWrite(fHandle, sLineBreak[1], Length(sLineBreak));
end;
备注:强>
StringElementSize
断言是为了证明假设,在下一行中,sLineBreak
具有单字节字符元素。 sLineBreak
的定义明确使用AnsiString
。如果您的Delphi是pre-Unicode,则此行不会编译,您可以删除它。sLineBreak
是将新行写入ASCII / ANSI文件的正确方法。在Windows上,它被定义为AnsiString(#13#10)
,即CR + LF对。在基于Unix的平台上,它被定义为AnsiString(#10)
,即单个LF。使用sLineBreak
逻辑表达您正在做的事情,并让编译器处理实现。FileSeek()
将文件指针移动到FileWrite()
写入的缓冲区的末尾,因此不需要调用FileWrite()
。