2011-07-29 20 views
0

在下面的代碼中,我試圖在eof到達後添加一個新行,但在最後一行的末尾寫入NULL。有人可以建議我嗎?如何在delphi中達到eof後插入新行

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

此外,你應該寫一個窗口行結束標記#13#10。它是ANSI還是Unicode文件? –

回答

0

假設你正在寫一個ASCII或ANSI文件,然後如下我將代碼時:

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

注:

  1. StringElementSize斷言證明的假設,在以下行中,sLineBreak具有單字節字符元素。明確使用AnsiString的定義爲sLineBreak。如果你的Delphi是pre-Unicode,那麼這行不會編譯,你可以刪除它。
  2. sLineBreak是將新行寫入ASCII/ANSI文件的正確方法。在Windows上,它被定義爲AnsiString(#13#10),即CR + LF對。在基於Unix的平臺上,它被定義爲AnsiString(#10),即單個LF。使用sLineBreak從邏輯上表達你在做什麼,並讓編譯器處理實現。
  3. FileSeek()的調用不需要,因爲FileWrite()將文件指針移動到FileWrite()寫入的緩衝區的末尾。