2011-07-29 5 views
0

아래 코드에서 eof에 도달 한 후에 새 행을 추가하려고했지만, 마지막 행의 끝에 NULL이 기록되었습니다. 아무도 나를 제안 할 수 있습니다. 다음과 같이 가정델파이에서 eof에 도달 한 후 새 행을 삽입하는 방법

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

또한 Windows 줄 끝 표시에 # 13 # 10을 써야합니다. ANSI 또는 유니 코드 파일입니까? –

답변

0

가 ASCII 또는 ANSI 파일로 작성 후, 나는 그것을 코드합니다 :

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

참고 :

  1. StringElementSize 주장은 가정을 정당화하는 것입니다 다음 줄에서 sLineBreak에는 1 바이트 문자 요소가 있습니다. sLineBreak의 정의는 AnsiString을 명시 적으로 사용합니다. Delphi가 pre-Unicode 인 경우이 줄은 컴파일되지 않으며 제거 할 수 있습니다.
  2. sLineBreak은 ASCII/ANSI 파일에 새 줄을 쓰는 올바른 방법입니다. Windows에서는 AnsiString(#13#10), 즉 CR + LF 쌍으로 정의됩니다. 유닉스 기반 플랫폼에서, 그것은 AnsiString(#10), 즉 단일 LF로 정의된다. 당신이하고있는 일을 논리적으로 표현하고 컴파일러가 구현을 처리하게하려면 sLineBreak을 사용하십시오.
  3. FileWrite()은 파일 포인터를 FileWrite()이 쓰는 버퍼 끝으로 이동하기 때문에 FileSeek()에 대한 호출이 필요하지 않습니다.
관련 문제