⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 help-function.txt

📁 DELPHI常用函数集及简要范例集
💻 TXT
📖 第 1 页 / 共 5 页
字号:
						  begin
							Halt(1); { Halt right here! }
						  end;
					  end;
				end;
			  Canvas.TextOut(10, 10, 'This will not be executed');
			 end;
-----------------------------------------------------------------------------
RunError			停止程式执行且执行run-time error.
-----------------------------------------------------------------------------
Unit		System
函数原型	procedure RunError [ ( Errorcode: Byte ) ];
范例		begin
			  {$IFDEF Debug}
			  if P = nil then
				RunError(204);
			  {$ENDIF}
			end;

=====================================
 I/O routines				I/O常式
=====================================
AssignFile			指定档案给一个档案变数.
-----------------------------------------------------------------------------
Unit		System
函数原型	procedure AssignFile(var F; FileName: string);
说明		**一个档案不可重复执行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			关闭档案.
-----------------------------------------------------------------------------
Unit		System
函数原型	procedure CloseFile(var F);
#### AssignFile, OpenDialog, Readln, CloseFile Example
-----------------------------------------------------------------------------
IOResult	传回最近一次执行I/O函数,是否有错误.
-----------------------------------------------------------------------------
Unit		System
函数原型	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
函数原型	procedure Reset(var F [: File; RecSize: Word ] );
-----------------------------------------------------------------------------
Rewrite			建立一个可供写入的新档案.
-----------------------------------------------------------------------------
Unit		System
函数原型	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,S3);
			  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;

结果		1234567890abcdefghij1234567890abcdefghij1234..
			5678..
			90..
			abcd..
			efgh..
			ij..
			1234567890..
			abcdefghij..
			abcdefghij..

			以上是存档结果,两点代表#13#10,两个位元.
			以Writeln存档者,多出换行符号#13#10.
			且如果以Writeln(F,I1,I2,I3)会当成同一串列,
			变数间没有间隔符号,造成Read时得不到预期的效果.

			读取结果
			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;

结果		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;

结果		pp_No存入6 Bytes
			pp_Name存入11 Bytes
			pp_Age存入4 Bytes(Integer 4 Bytes)
			pp_Sum存入8 Bytes(Double 8 Bytes)

			整个Record以16的倍数存档.
EXAMPLE
var F: TextFile;
begin
  AssignFile(F, 'NEWFILE.$$$');
  Rewrite(F);
  Writeln(F, 'Just created file with this text in it...');
  CloseFile(F);
end;
-----------------------------------------------------------------------------
Seek				移动档案指标.
-----------------------------------------------------------------------------
Unit		System
函数原型	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			将目前档案指标位置之後的档案内容全部删除.
-----------------------------------------------------------------------------
Unit		System
函数原型	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
函数原型	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 := '现在位置 : ' + 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
函数原型	function FileSize(var F): Integer;
说明		F 不可为 Text File
			如果F为record file,则传回record数,
			否则传回Byte数.
## FileSize, Seek, FilePos Example
-----------------------------------------------------------------------------
Eof					测试档案是否结束.
-----------------------------------------------------------------------------
Unit		System
函数原型	function Eof(var F): Boolean;
函数原型	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;
--------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -