?? help-function.txt
字號:
begin
Halt(1); { Halt right here! }
end;
end;
end;
Canvas.TextOut(10, 10, 'This will not be executed');
end;
-----------------------------------------------------------------------------
RunError 停止程式執(zhí)行且執(zhí)行run-time error.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure RunError [ ( Errorcode: Byte ) ];
范例 begin
{$IFDEF Debug}
if P = nil then
RunError(204);
{$ENDIF}
end;
=====================================
I/O routines I/O常式
=====================================
AssignFile 指定檔案給一個檔案變數(shù).
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure AssignFile(var F; FileName: string);
說明 **一個檔案不可重復(fù)執(zhí)行AssignFile兩次以上.
Example
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;
## AssignFile, OpenDialog, Readln, CloseFile Example
-----------------------------------------------------------------------------
CloseFile 關(guān)閉檔案.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure CloseFile(var F);
#### AssignFile, OpenDialog, Readln, CloseFile Example
-----------------------------------------------------------------------------
IOResult 傳回最近一次執(zhí)行I/O函數(shù),是否有錯誤.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 function IOResult: Integer;
范例 var
F: file of Byte;
S: String;
begin
S:= 'c:\ka\aaa.txt';
AssignFile(F, S);
{$I-}
Reset(F);
{$I+}
if IOResult = 0 then
Label1.Caption:='File size in bytes: ' +
IntToStr(FileSize(F);
else
Label1.Caption:='開檔失敗';
end;
說明 傳回0表示沒有錯誤.
EXAMPLE
var
F: file of Byte;
begin
if OpenDialog1.Execute then begin
AssignFile(F, OpenDialog1.FileName);
{$I-}
Reset(F);
{$I+}
if IOResult = 0 then
MessageDlg('File size in bytes: ' + IntToStr(FileSize(F)),
mtInformation, [mbOk], 0)
else
MessageDlg('File access error', mtWarning, [mbOk], 0);
end;
end;
-----------------------------------------------------------------------------
Reset 開起一個可供讀取的檔案.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure Reset(var F [: File; RecSize: Word ] );
-----------------------------------------------------------------------------
Rewrite 建立一個可供寫入的新檔案.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure Rewrite(var F: File [; Recsize: Word ] );
范例 procedure TForm1.Button1Click(Sender: TObject);
var
F: TextFile;
I1,I2,I3:Integer;
S1,S2,S3:String;
begin
I1:=1234;
I2:=5678;
I3:=90;
S1:='abcd';
S2:='efgh';
S3:='ij';
AssignFile(F,'c:\ka\aaa.txt');
Rewrite(F);
Write(F,I1);
Write(F,I2);
Write(F,I3);
Write(F,S1);
Write(F,S2);
Write(F,S3);
Write(F,I1,I2,I3);
Write(F,S1,S2,S3);
Writeln(F,I1);
Writeln(F,I2);
Writeln(F,I3);
Writeln(F,S1);
Writeln(F,S2);
Writeln(F,I1,I2,I3);
Writeln(F,S1,S2,S3);
Reset(F);
Readln(F, S1);
Readln(F, I1);
Label1.Caption:=S1+' '+IntToStr(I1);
CloseFile(F);
end;
結(jié)果 1234567890abcdefghij1234567890abcdefghij1234..
5678..
90..
abcd..
efgh..
ij..
1234567890..
abcdefghij..
abcdefghij..
以上是存檔結(jié)果,兩點代表#13#10,兩個位元.
以Writeln存檔者,多出換行符號#13#10.
且如果以Writeln(F,I1,I2,I3)會當(dāng)成同一串列,
變數(shù)間沒有間隔符號,造成Read時得不到預(yù)期的效果.
讀取結(jié)果
S1=1234567890abcdefghij1234567890abcdefghij1234
長度44且不含#13#10兩個位元.
I1=5678
** Write(F,I1:10:2,I2:8:2);
具有格式化的功能,如同Str.
范例 procedure TForm1.Button1Click(Sender: TObject);
var
F: file of Byte;
I1,I2,I3:Byte;
begin
I1:=16;
I2:=32;
I3:=48;
AssignFile(F,'c:\ka\aaa.txt');
Rewrite(F);
Write(F,I1);
Write(F,I2);
Write(F,I3);
Write(F,I1,I2,I3);
I1:=0;
Reset(F);
Read(F, I1);
Label1.Caption:=IntToStr(I1);
CloseFile(F);
end;
結(jié)果 file of Byte 及 file of record
只能以Write及Read,來寫入及讀取,
不可以Writeln及Readln.
范例 procedure TForm1.Button1Click(Sender: TObject);
type
ppRec = record
pp_No:String[5];
pp_Name:String[10];
pp_Age:Integer;
pp_Sum:Double;
end;
var
Rec : ppRec;
Rec2: ppRec;
F: file of ppRec;
begin
With Rec do
Begin
pp_No:='0001';
pp_Name:='abc';
pp_Age:=12;
pp_Sum:=600;
End;
AssignFile(F,'c:\ka\aaa.txt');
Rewrite(F);
Write(F,Rec);
Rec.pp_No:='0002';
Rec.pp_Sum:=58.2;
Write(F,Rec);
Rec.pp_No:='0003';
Rec.pp_Sum:=258.242;
Write(F,Rec);
seek(F,1);
Read(F,Rec2);
seek(F,1);
Truncate(F); {刪除,只剩第0筆}
Canvas.TextOut(5,10,Rec2.pp_No);
Canvas.TextOut(5,30,Rec2.pp_Name);
Canvas.TextOut(5,50,Format('%d',[Rec2.pp_Age]));
Canvas.TextOut(5,70,Format('%f',[Rec2.pp_Sum]));
CloseFile(F);
end;
結(jié)果 pp_No存入6 Bytes
pp_Name存入11 Bytes
pp_Age存入4 Bytes(Integer 4 Bytes)
pp_Sum存入8 Bytes(Double 8 Bytes)
整個Record以16的倍數(shù)存檔.
EXAMPLE
var F: TextFile;
begin
AssignFile(F, 'NEWFILE.$$$');
Rewrite(F);
Writeln(F, 'Just created file with this text in it...');
CloseFile(F);
end;
-----------------------------------------------------------------------------
Seek 移動檔案指標(biāo).
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure Seek(var F; N: Longint);
說明 Seek從0開始.
Example
var
f: file of Byte;
size : Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
CloseFile(f);
end;
end;
## FileSize, Seek, FilePos Example
-----------------------------------------------------------------------------
Truncate 將目前檔案指標(biāo)位置之後的檔案內(nèi)容全部刪除.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 procedure Truncate(var F);
范例
var
f: file of Integer;
i,j: Integer;
begin
AssignFile(f,'TEST.INT');
Rewrite(f);
for i := 1 to 6 do
Write(f,i);
Writeln('File before truncation:');
Reset(f);
while not Eof(f) do
begin
Read(f,i);
Writeln(i);
end;
Reset(f);
for i := 1 to 3 do
Read(f,j); { Read ahead 3 records }
Truncate(f); { Cut file off here }
Writeln;
Writeln('File after truncation:');
Reset(f);
while not Eof(f) do
begin
Read(f,i);
Writeln(i);
end;
CloseFile(f);
Erase(f);
end;
-----------------------------------------------------------------------------
FilePos 傳回目前檔案的位置.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 function FilePos(var F): Longint
說明 F 不可為 Text File
檔頭 :FilePos(F):=0;
檔尾 :Eof(F):=True;
范例 var
f: file of Byte;
S: string;
begin
S:= 'c:\ka\abc.txt';
AssignFile(f, S);
Reset(f);
Seek(f,1);
Label1.Caption := '現(xiàn)在位置 : ' + IntToStr(FilePos(f));
end;
Example
var
f: file of Byte;
size : Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
Seek(f,size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
CloseFile(f);
end;
end;
##FileSize, Seek, FilePos Example
-----------------------------------------------------------------------------
FileSize 檔案長度.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 function FileSize(var F): Integer;
說明 F 不可為 Text File
如果F為record file,則傳回record數(shù),
否則傳回Byte數(shù).
## FileSize, Seek, FilePos Example
-----------------------------------------------------------------------------
Eof 測試檔案是否結(jié)束.
-----------------------------------------------------------------------------
Unit System
函數(shù)原型 function Eof(var F): Boolean;
函數(shù)原型 function Eof [ (var F: Text) ]: Boolean;
范例 var
F1, F2: TextFile;
Ch: Char;
begin
if OpenDialog1.Execute then
begin
AssignFile(F1, OpenDialog1.Filename);
Reset(F1);
if SaveDialog1.Execute then
begin
AssignFile(F2, OpenDialog1.Filename);
Rewrite(F2);
while not Eof(F1) do
begin
Read(F1, Ch);
Write(F2, Ch);
end;
CloseFile(F2);
end;
CloseFile(F1);
end;
end;
Example
var
F1, F2: TextFile;
Ch: Char;
begin
if OpenDialog1.Execute then begin
AssignFile(F1, OpenDialog1.Filename);
Reset(F1);
if SaveDialog1.Execute then begin
AssignFile(F2, SaveDialog1.Filename);
Rewrite(F2);
while not Eof(F1) do
begin
Read(F1, Ch);
Write(F2, Ch);
end;
CloseFile(F2);
end;
CloseFile(F1);
end;
end;
--------------------------
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -