0
在下面的代碼中,我試圖在eof到達後添加一個新行,但在最後一行的末尾寫入NULL。有人可以建議我嗎?如何在delphi中達到eof後插入新行
If (nImportPos > 0) then begin
nImportPos := FileWrite(fHandle, #13, length(#13));
FileSeek(fhandle,0,2);
end;
在下面的代碼中,我試圖在eof到達後添加一個新行,但在最後一行的末尾寫入NULL。有人可以建議我嗎?如何在delphi中達到eof後插入新行
If (nImportPos > 0) then begin
nImportPos := FileWrite(fHandle, #13, length(#13));
FileSeek(fhandle,0,2);
end;
假設你正在寫一個ASCII或ANSI文件,然後如下我將代碼時:
if nImportPos>0 then begin
Assert(StringElementSize(sLineBreak)=1);
nImportPos := FileWrite(fHandle, sLineBreak[1], Length(sLineBreak));
end;
注:
StringElementSize
斷言證明的假設,在以下行中,sLineBreak
具有單字節字符元素。明確使用AnsiString
的定義爲sLineBreak
。如果你的Delphi是pre-Unicode,那麼這行不會編譯,你可以刪除它。sLineBreak
是將新行寫入ASCII/ANSI文件的正確方法。在Windows上,它被定義爲AnsiString(#13#10)
,即CR + LF對。在基於Unix的平臺上,它被定義爲AnsiString(#10)
,即單個LF。使用sLineBreak
從邏輯上表達你在做什麼,並讓編譯器處理實現。FileSeek()
的調用不需要,因爲FileWrite()
將文件指針移動到FileWrite()
寫入的緩衝區的末尾。
此外,你應該寫一個窗口行結束標記#13#10。它是ANSI還是Unicode文件? –