什麼叫二進位開檔? |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
什麼叫二進位開檔?
這是一位會員問站長的問題,站長貼上回答給Delphi新生參考! 就檔案系統來說是沒有區分文字檔與二進位檔的,
是我們開檔的指令不同,對檔案的詮釋不同,
才會有開文字檔與開二進位檔的不同! 簡單的說,用TextFile的方式開檔就是"開文字檔",
文字檔以換行字元為每行的結束 $0d $0a
以檔案結束字元 $1a 為檔案最終的Byte(但有時會省略) 用File的方式採用BlockRead()函式開檔就是"開二進位檔",
資料的讀取採一個Byte為單位讀出至Buffer中! 文字檔開檔範例,採TextFile範例:
var F: TextFile;
S: string;
begin
if OpenDialog1.Execute then { Display Open dialog box }
begin
AssignFile(F, OpenDialog1.FileName); { File selected in dialog box }
Reset(F);
Readln(F, S); { Read the first line out of the file }
Edit1.Text := S; { Put string in a TEdit control }
CloseFile(F);
end;
end; 二進位(Binary)檔開檔範例,採File範例:
var FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
begin
if OpenDialog1.Execute then { Display Open dialog box }
begin
AssignFile(FromF, OpenDialog1.FileName);
Reset(FromF, 1); { Record size = 1 }
if SaveDialog1.Execute then { Display Save dialog box}
begin
AssignFile(ToF, SaveDialog1.FileName); { Open output file } Rewrite(ToF, 1); { Record size = 1 }
Canvas.TextOut(10, 10, 'Copying ' IntToStr(FileSize(FromF))
' bytes...');
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;
end;
end; ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |