Str(-1.4:2:1, T); S := S + T + '''' rounds to '''' + IntToStr(Round(-1.4)) + #13#10; Str(-1.5:2:1, T); S := S + T + '''' rounds to '''' + IntToStr(Round(-1.5)); MessageDlg(S, mtInformation, [mbOk], 0); end; ----------------------------------------------------------------------------- Trunc 将实数转为整数.(小数直接舍弃) ----------------------------------------------------------------------------- Unit System 函数原型 function Trunc(X: Extended): Longint; Untyped file routines var S, T: string; begin Str(1.4:2:1, T); S := T + '''' Truncs to '''' + IntToStr(Trunc(1.4)) + #13#10; Str(1.5:2:1, T); S := S + T + '''' Truncs to '''' + IntToStr(Trunc(1.5)) + #13#10; Str(-1.4:2:1, T); S := S + T + '''' Truncs to '''' + IntToStr(Trunc(-1.4)) + #13#10; Str(-1.5:2:1, T); S := S + T + '''' Truncs to '''' + IntToStr(Trunc(-1.5)); MessageDlg(S, mtInformation, [mbOk], 0); end; ------------------------- 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;
----------------------------------------------------------------------------- BlockRead 读取档案至记忆体区块. ----------------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var FromF, ToF: file; NumRead, NumWritten: Integer; Buf: array[1..2048] of Char; begin if OpenDialog1.Execute then { 开档对话盒} 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; ## BlockRead, BlockWrite, SaveDialog Example ----------------------------------------------------------------------------- BlockWrite 将记忆体区块写入档案. ----------------------------------------------------------------------------- Unit System 函数原型 procedure BlockRead(var F: File; var Buf; Count: Integer [; var Result: Integer]); 函数原型 procedure BlockWrite(var f: File; var Buf; Count: Integer [; var Result: Integer]); 范例 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; ====================================== Variant support routines 鬼牌变数函式 ====================================== VarArrayCreate 建立一个variant array. ----------------------------------------------------------------------------- Unit System 函数原型 function VarArrayCreate(const Bounds: array of Integer; VarType: Integer): Variant; 范例 procedure TForm1.Button1Click(Sender: TObject); var A:Variant; S:String; begin A:=VarArrayCreate([0,4],varVariant); A[0]:=1; A[1]:=1234.5678; A[2]:=''''Hello world''''; A[3]:=TRUE; A[4]:=VarArrayOf([1 ,10 ,100 ,10000]); S:=A[4][2]; S:=A[2]+'''' ''''+S; Label1.Caption:=S; end; 说明 S:=A[4][2]; Variant可以不用函数来做转换. 只能单独使用,如为下列则有误. S:=A[2]+'''' ''''+A[4][2];
VarType varEmpty $0000 The variant is Unassigned. varNull $0001 The variant is Null. varSmallint $0002 16-bit signed integer (type Smallint). varInteger $0003 32-bit signed integer (type Integer). varSingle $0004 Single-precision floating-point value (type Single). varDouble $0005 Double-precision floating-point value (type Double). varCurrency $0006 Currency floating-point value (type Currency). VarDate $0007 Date and time value (type TDateTime). VarOleStr &n << 上一页 [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] ... 下一页 >> |