2012-04-25 3 views
0

동일한 인스턴스 또는 동일한 파일 핸들을 통해 파일을 읽고 쓸 수 있어야합니다. 내말은 이것이야. 다음과 같이 파일을 여는 것으로 가정 해보십시오.Delphi Prism의 BinaryReader 및 BinaryWriter 파일 핸들

BinaryReader jfile := new BinaryReader(File.OpenRead('c:\jokes.dat')); 

나는 또한 jfile 핸들을 닫은 후 파일에 쓸 수 있도록 BinaryWriter를 호출 할 필요없이 파일에 쓸 수 있어야합니다. 그럴 수있어?

또한 파일을 열면 동일한 이름의 이전 파일에있는 모든 데이터가 완전히 지워집니다. 그게 사실이야?

나는 f 파일 핸들을 재할 당하지 않고도 Win32에서 다음과 같이 할 수 있다는 것을 알고있다.

Assignfile(f,fname); 
Reset(f,1); 
BlockRead(f,jokeA,SizeOf(jokeA)); 

Reset(f,1); 
BlockWrite(f,jokeB,SizeOf(jokeB)); 
CloseFile(f); 
+0

이 [진 독자와 작가 동시에 열] (의 중복 http://stackoverflow.com/questions/8652045/binary-reader-and-writer-open -at-same-time), 하나는 C# 태그를 가지고 있고 여러분은 .net과 delphi-prism을 가지고있다. 아마도 도움이 될 것입니다. –

+0

@KenWhite 감사합니다. 나는 그 질문을 보지 못했습니다. – ThN

답변

1

을 수행 할 수 있습니다

using lFile := File.Open('c:\jokes.dat', FileMode.ReadWrite) do begin 
    var lReader := new BinaryReader(lFile); 
    // read using reader 

    lFile.Position := lFile.Length; 
    var lWriter := new BinaryWriter(lFile); 
    lWriter.Write... 

end; 
1

FWIW, 나는 이진 * 클래스로는 할 수 없다고 생각합니다. FileStream 클래스를 사용할 수 있습니다. 또한 FWIW는 고전적인 Pascal/Delphi Reset (File) 명령으로 실제로 새로운 핸들을 엽니 다. 다시 사용되는 파일 변수 (본질적으로 파일 이름) 일뿐입니다.