delphi函数(1)

      delphi记事 2004-10-23 15:58
_HELP函数集
●●●●●●●
------------------------------------------------------------------
abs(x) 绝对值
arctan(x) 反正切
cos(x) 传回馀弦函数值
exp(x) e的x次幂
frac(x) 取小数部分
int(x) 取整
ln(x) 自然对数
sin(x) 传回正弦函数值
sqr(x) x*x
sqrt(x) 平方根
其它
pred(x) pred('D')='C', pred(true)=1;
succ(x) succ('Y')='Z', succ(pred(x))=x
ord(x) 求x在字符集中的序号,如ord('A')=65
chr(x) chr(65)='A'
round(x) 四舍五入
trunc(x) trunc(4.8)=4,trunc('-3.6')=-3
upcase(x) upcase('a')='A'
hi(I) hi(

- + P A

- {logtitle}

      {Class} {publishtime}
{logsummary}
标签集:TAGS:{tags}
我要留言To Comment 阅读全文Read All | 回复Comments({commentcount}) 点击Count({viewcount})

{phototitle}

{phototitle}

  • 点击:Hits:{viewcount}
  • 回复:Comments:{commentcount}
  • 发表:PostTime:{posttime}

{logsummary}

{logtitle}

      {Class} {publishtime}
{logcontent}
标签集:TAGS:{tags}
回复Comments({commentcount}) 点击Count({viewcount})

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
A30)=

- + P A

- {logtitle}

      {Class} {publishtime}
{logsummary}
标签集:TAGS:{tags}
我要留言To Comment 阅读全文Read All | 回复Comments({commentcount}) 点击Count({viewcount})

{phototitle}

{phototitle}

  • 点击:Hits:{viewcount}
  • 回复:Comments:{commentcount}
  • 发表:PostTime:{posttime}

{logsummary}

{logtitle}

      {Class} {publishtime}
{logcontent}
标签集:TAGS:{tags}
回复Comments({commentcount}) 点击Count({viewcount})

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
A
lo(I) lo(

- + P A

- {logtitle}

      {Class} {publishtime}
{logsummary}
标签集:TAGS:{tags}
我要留言To Comment 阅读全文Read All | 回复Comments({commentcount}) 点击Count({viewcount})

{phototitle}

{phototitle}

  • 点击:Hits:{viewcount}
  • 回复:Comments:{commentcount}
  • 发表:PostTime:{posttime}

{logsummary}

{logtitle}

      {Class} {publishtime}
{logcontent}
标签集:TAGS:{tags}
回复Comments({commentcount}) 点击Count({viewcount})

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
A30)=$30
random(n) 产生[0,n)间的随机整数
sizeof(name) 求出某类型或变量在内存中占用的字节数
swap(num) swap($3621)=$2136
================================
Arithmetic routines        数学运算
================================
Abs                绝对值
---------------------------------------------------------
Unit        System
函数原型    function Abs(X);
说明        X为整数or实数.
范例    
var
r: Real;
i: Integer;
begin
r := Abs(-2.3);        { 2.3 }
i := Abs(-157);        { 157 }
end;
----------------------------------------------------------
ArcTan            三角函数
----------------------------------------------------------
范例
Cos
var R: Extended;
begin
R := Cos(Pi);
end;
----------------------------------------------------------
Sin
----------------------------------------------------------
范例
var
R: Extended;
S: string;
begin
R := Sin(Pi);
Str(R:5:3, S);
Canvas.TextOut(10, 10, 'The Sin of Pi is ' + S);
end;
----------------------------------------------------------
Unit        System
函数原型    function ArcTan(X: Extended): Extended;
函数原型    function Cos(X: Extended): Extended;
函数原型    function Sin(X: Extended): Extended;
----------------------------------------------------------
说明        X为径度.
            Tan(x) === Sin(x) / Cos(x)
            ArcSin(x) = ArcTan (x/sqrt (1-sqr (x)))
            ArcCos(x) = ArcTan (sqrt (1-sqr (x)) /x)
            左边这三个不是函数,而是右边运算求得.
范例
var
R: Extended;
begin
R := ArcTan(Pi);
end;
范例        var
             R: Extended;
             S: string;
            begin
             R := Sin(Pi);
             Str(R:5:3, S);
             Canvas.TextOut(10, 10, 'The Sin of Pi is ' + S);
            end;
----------------------------------------------------------
Frac                求一个实数的小数部份
----------------------------------------------------------
Unit        System
函数原型    function Frac(X: Real): Real;
说明        X为实数.
范例        var
             R: Real;
            begin
             R := Frac(123.456);        { 0.456 }
             R := Frac(-123.456);        { -0.456 }
            end;
------------------------------------------
Int                    求一个实数的整数部份
------------------------------------------
Unit        System
函数原型    function Int(X: Real): Real;
说明        X为实数.
范例        var
             R: Real;
            begin
             R := Int(123.456);        { 123.0 }
             R := Int(-123.456);        { -123.0 }
            end;
------------------------------------------
Pi                    就是数学的Pi
------------------------------------------
Unit        System
函数原型    function Pi: Extended;
说明        它是一个函数,但我们就把它当作是预设的变数来用吧!
            Pi= 3.1415926535897932385
------------------------------------------
Sqr                    X的平方
-----------------------------------------
范例
var
S, Temp: string;
begin
Str(Sqr(5.0):3:1, Temp);
S := '5 squared is ' + Temp + #13#10;
Str(Sqrt(2.0):5:4, Temp);
S := S + 'The square root of 2 is ' + Temp;
MessageDlg(S, mtInformation, [mbOk], 0);
end;
-----------------------------------------
Sqrt                X的平方根
------------------------------------------
Unit        System
函数原型    function Sqr(X: Extended): Extended;
函数原型    function Sqrt(X: Extended): Extended;
范例        var
             S, Temp: string;
            begin
             Str(Sqr(5.0):3:1, Temp);
             S := '5 squared is ' + Temp + #13#10;
             Str(Sqrt(2.0):5:4, Temp);
             S := S + 'The square root of 2 is ' + Temp;
             MessageDlg(S, mtInformation, [mbOk], 0);
            end;
------------------------------------------
Ln                    自然对数
------------------------------------------
范例
var
e : real;
S : string;
begin
e := Exp(1.0);
Str(ln(e):3:2, S);
S := 'e = ' + FloatToStr(e) + '; ln(e) = ' + S;
Canvas.TextOut(10, 10, S);
end;
----------------------------------------
Exp                指数
------------------------------------------
Unit        System
函数原型    function Ln(X: Real): Real;
函数原型    function Exp(X: Real): Real;
范例        var
             e : real;
             S : string;
            begin
             e := Exp(1.0);
             Str(ln(e):3:2, S);
             S := 'ln(e) = ' + S;
             Canvas.TextOut(10, 10, S);
            end;
------------------------------------------
Date and time routines    日期及时间函数
------------------------------------------
Date                传回目前的日期
Unit        SysUtils
函数原型    function Date: TDateTime;
范例        procedure TForm1.Button1Click(Sender: TObject);
            begin
             Label1.Caption := 'Today is ' + DateToStr(Date);
            end;
------------------------------------------
DateTimeToStr    日期时间转换成内定型字串(1996/12/20 09:12:20 PM)
------------------------------------------
Unit        SysUtils
函数原型    function DateTimeToStr(DateTime: TDateTime): string;
范例        procedure TForm1.Button1Click(Sender: TObject);
            begin
             Label1.Caption := DateTimeToStr(Now);
            end;
--------------------------------------------------------
DateTimeToString    日期时间转换成自定型字串
-------------------------------------------------------
Unit        SysUtils
函数原型    procedure DateTimeToString(var Result: string; const Format:
                string; DateTime: TDateTime);
范例        procedure TForm1.FormCreate(Sender: TObject);
            var
             s:string;
            begin
             DateTimeToString(s,'dddd,mmmm d,yyyy "at" hh:mm
                AM/PM',Now);
             Label1.Caption :=s;
            end;
结果        星期五,十二月 20,1996 at 09:20 PM
-----------------------------------------------------------------------------
****     Format格式叁考下面.FormatDateTime.
--------------------------------------------------------
DateToStr            日期转换成内定型字串.(1996/12/20)
--------------------------------------------------------
Unit        SysUtils
函数原型        function DateToStr(Date: TDateTime): string;
范例
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := 'Today is ' + DateToStr(Date);
end;
# Date, DateToStr Example
--------------------------------------------------------
DayOfWeek        求叁数日期是星期几.
--------------------------------------------------------
Unit        SysUtils
函数原型    function DayOfWeek(Date: TDateTime): Integer;
说明        传回值是一整数,1~7.
            星期日为1.
范例
procedure TForm1.Button1Click(Sender: TObject);
var
ADate: TDateTime;
days: array[1..7] of string;
begin
days[1] := 'Sunday';
days[2] := 'Monday';
days[3] := 'Tuesday';
days[4] := 'Wednesday';
days[5] := 'Thursday';
days[6] := 'Friday';
days[7] := 'Saturday';
ADate := StrToDate(Edit1.Text);
ShowMessage(Edit1.Text + ' is a ' + days[DayOfWeek(ADate)];
end;
# StrToDate, DayOfWeek Example
--------------------------------------------------------
DecodeDate        将TDateTime型态的日期变数,转为Word型态.
--------------------------------------------------------
范例
procedure TForm1.Button1Click(Sender: TObject);
var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of Month '
+ IntToStr(Month) + ' of Year ' + IntToStr(Year);
DecodeTime(Present, Hour, Min, Sec, MSec);
Label2.Caption := 'The time is Minute ' + IntToStr(Min) + ' of Hour '
+ IntToStr(Hour);
end;
# DecodeDate, DecodeTime Example
--------------------------------------------------------
DecodeTime        将TDateTime型态的时间变数,转为Word型态.
--------------------------------------------------------
Unit        SysUtils
函数原型    procedure DecodeDate(Date: TDateTime; var Year, Month,Day: Word);
函数原型    procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec,MSec: Word);
范例     procedure TForm1.Button1Click(Sender: TObject);
            var
             Present: TDateTime;
             Year, Month, Day, Hour, Min, Sec, MSec: Word;
            begin
             Present:= Now;
             DecodeDate(Present, Year, Month, Day);
             Label1.Caption := 'Today is Day ' + IntToStr(Day) + ' of
                Month ' +    IntToStr(Month) + ' of Year ' + IntToStr(Year);
             DecodeTime(Present, Hour, Min, Sec, MSec);
             Label2.Caption := 'The time is Minute ' +IntToStr(Min) + ' of
                Hour ' + IntToStr(Hour);
            end;
--------------------------------------------------------
EncodeDate        将Word型态的日期变数,转为TDateTime型态.
--------------------------------------------------------
范例
procedure TForm1.Button1Click(Sender: TObject);
var
MyDate: TDateTime;
begin
MyDate := EncodeDate(StrToInt(Edit1.Text), StrToInt(Edit2.Text), StrToInt(Edit3.Text));
Label1.Caption := DateToStr(MyDate);
end;
-------------------------------------------------------
EncodeTime        将Word型态的时间变数,转为TDateTime型态.
--------------------------------------------------------
Unit        SysUtils
函数原型    function EncodeDate(Year, Month, Day: Word): TDateTime;
函数原型    function EncodeTime(Hour, Min, Sec, MSec: Word):
                TDateTime;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             MyDate: TDateTime;
             MyTime: TDateTime;
            begin
             MyDate := EncodeDate(83, 12, 31);
             Label1.Caption := DateToStr(MyDate);
             MyTime := EncodeTime(0, 45, 45, 7);
             Label2.Caption := TimeToStr(MyTime);
            end;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
MyTime: TDateTime;
begin
MyTime := EncodeTime(0, 45, 45, 7);
Label1.Caption := TimeToStr(MyTime);
end;
--------------------------------------------------------
FormatDateTime    将日期时间依Format的格式转换给一字串.
--------------------------------------------------------
Unit        SysUtils
函数原型    function FormatDateTime(const Format: string; DateTime:
                TDateTime): string;
****        类似DateTimeToString.
Format格式
c        内定值ShortDateFormat的格式.(1996/12/20 09:20:15 PM).
d        日期,前面不补0.(1-31)
dd        日期,前面补0.(01-31)
ddd        星期.(星期日).
Dddd        中文2.01版,同上.
ddddd    日期.(1996/12/20)
dddddd    日期.(1996年12月20日)
m        月份,前面不补0.(1-12)
mm        月份,前面补0.(01-12)
mmm    中文显示.(十二月)
mmmm    中文2.01版,同上.
Yy        年度.(00-99)
yyyy        年度.(0000-9999)
h        小时.(0-23)
hh        小时.(00-23)
n        分钟.(0-59)
nn        分钟.(00-59)
s        秒钟.(0-59)
ss        秒钟.(00-59)
t        时间.(09:20 PM)
tt        时间.(09:20:15 PM)
am/pm    单独显示am or pm.(若大写,则显示大写)
a/p        单独显示a or p.
范例
The following example assigns 'The meeting is on Wednesday, February 15, 1995 at 10:30 AM' to the string variable S.
S := FormatDateTime('"The meeting is on " dddd, mmmm d, yyyy, " at " hh:mm AM/PM',
StrToDateTime('2/15/95 10:30am'));//???
--------------------------------------------------------
Now                传回目前的日期时间.
--------------------------------------------------------
Unit        SysUtils
函数原型    function Now: TDateTime;
范例
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := DateTimeToStr(Now);
end;
# Now, DateTimeToStr Example
--------------------------------------------------------
StrToDate            将字串转为TDateTime型态的日期.
--------------------------------------------------------
Unit        SysUtils
函数原型    function StrToDate(const S: string): TDateTime;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             ADate: TDateTime;
            begin
             ADate := StrToDate(Edit1.Text);
             Label1.Caption := DateToStr(ADate);
            end;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
ADate: TDateTime;
days: array[1..7] of string;
begin
days[1] := 'Sunday';
days[2] := 'Monday';
days[3] := 'Tuesday';
days[4] := 'Wednesday';
days[5] := 'Thursday';
days[6] := 'Friday';
days[7] := 'Saturday';
ADate := StrToDate(Edit1.Text);
ShowMessage(Edit1.Text + ' is a ' + days[DayOfWeek(ADate)];
end;
# StrToDate, DayOfWeek Example
--------------------------------------------------------
StrToDateTime    将字串转为TDateTime型态的日期时间.
--------------------------------------------------------
Unit        SysUtils
函数原型    function StrToDateTime(const S: string): TDateTime;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
ADateAndTime: TDateTime;
begin
ADateAndTime := StrToDateTime(Edit1.Text);
Table1.FieldByName('TimeStamp').AsDateTime := ADateAndTime;
end;
--------------------------------------------------------
StrToTime            将字串转为TDateTime型态的时间.
--------------------------------------------------------
Unit        SysUtils
函数原型    function StrToTime(const S: string): TDateTime;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
ATime: TDateTime;
begin
ATime := StrToTime(Edit1.Text);
if ATime < 0.50 then
ShowMessage('Good Morning')
else
ShowMessage('Good Afternoon');
end;
--------------------------------------------------------
Time                传回目前的时间.
--------------------------------------------------------
Unit        SysUtils
函数原型    function Time: TDateTime;
范例
procedure TForm1.Timer1Timer(Sender: TObject);
var
DateTime : TDateTime;
str : string;
begin
DateTime := Time; // store the current date and time
str := TimeToStr(DateTime); // convert the time into a string
Caption := str; // display the time on the form's caption
{ Note This could have been done with the following line of code:
Caption := TimeToStr(Time); }
end;
# Time, TimeToStr Example
--------------------------------------------------------
TimeToStr            时间转换成内定型字串.(09:20:15 PM)
--------------------------------------------------------
Unit        SysUtils
函数原型    function TimeToStr(Time: TDateTime): string;
GetMem procedure        配置记忆体程序
New                配置指位器P的记忆体空间,
                    大小为P所指型态的大小.
--------------------------------------------------------
Dispose            释放New所配置的记忆体.
--------------------------------------------------------
Unit        System
函数原型    procedure New(var P: Pointer);
函数原型    procedure Dispose(var P: Pointer);
范例        type
             PListEntry = ^TListEntry;
             TListEntry = record
         Next: PListEntry;
             Text: string;
             Count: Integer;
            end;
            var
             List, P: PListEntry;
            begin
             ...
             New(P);
             P^.Next := List;
             P^.Text := 'Hello world';
             P^.Count := 1;
             List := P;
             ...
             Dispose(P);
            
            end;
范例
type
Str18 = string[18];
var
P: ^Str18;
begin
New(P);
P^ := 'Now you see it...';
Dispose(P);    { Now you don't... }
end;
--------------------------------------------------------
GetMem            配置指位器P的记忆体空间,大小可自行设定.
--------------------------------------------------------
范例
var
F: file;
Size: Integer;
Buffer: PChar;
begin
AssignFile(F, 'test.txt');
Reset(F, 1);
try
Size := FileSize(F);
GetMem(Buffer, Size);
try
BlockRead(F, Buffer^, Size);
ProcessFile(Buffer, Size);
finally
FreeMem(Buffer);
end;
finally
CloseFile(F);
end;
end;
--------------------------------------------------------
FreeMem            释放GetMem所配置的记忆体.
--------------------------------------------------------
Unit        System
函数原型    procedure GetMem(var P: Pointer; Size: Integer);
函数原型    procedure FreeMem(var P: Pointer[; Size: Integer]);
范例        var
             F: file;
             Size: Integer;
             Buffer: PChar;
            begin
             AssignFile(F, 'test.txt');
             Reset(F, 1);
             try
                Size := FileSize(F);
                GetMem(Buffer, Size);
                try
                    BlockRead(F, Buffer^, Size);
                    ProcessFile(Buffer, Size);
                finally
                    FreeMem(Buffer);
            end;
             finally
                CloseFile(F);
             end;
            end;

====================================
File-management routines    档案管理常式
====================================
--------------------------------------------------------
ChangeFileExt    变更档案的副档名
--------------------------------------------------------
Unit        SysUtils
函数原型    function ChangeFileExt(const FileName, Extension: string):
                string;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             P1:String;
             P2:String;
            begin
             P1:='abc.txt';
             P2:='.ini';
             S := ChangeFileExt(P1,P2);
             Label1.Caption:=S;
            end;

结果        S== 'abc.ini'

            P1:='abc'
            P2:='.ini'
            S== 'abc.ini'

            P1:='c:\windows\abc.txt'
            P2:='.ini'
            S=='c:\windows\abc.ini'

            P1:='abc.txt'
            P2:='ini'
            S=='abcini'
            **注意:P2的第一位元必须有一点'.ini'
范例
procedure TForm1.ConvertIcon2BitmapClick(Sender: TObject);

var
s : string;
Icon: TIcon;
begin

OpenDialog1.DefaultExt := '.ICO';

OpenDialog1.Filter := 'icons (*.ico)|*.ICO';
OpenDialog1.Options := [ofOverwritePrompt, ofFileMustExist, ofHideReadOnly ];
if OpenDialog1.Execute then
begin
Icon := TIcon.Create;
try
Icon.Loadfromfile(OpenDialog1.FileName);
s:= ChangeFileExt(OpenDialog1.FileName,'.BMP');
Image1.Width := Icon.Width;
Image1.Height := Icon.Height;
Image1.Canvas.Draw(0,0,Icon);
Image1.Picture.SaveToFile(s);

ShowMessage(OpenDialog1.FileName + ' Saved to ' + s);
finally
Icon.Free;
end;
end;
end;
# SaveToFile, Create, Height, Width, Canvas, ChangeFileExt example
--------------------------------------------------------
ExpandFileName    将档案名称加在目前所在之路径全名之後
--------------------------------------------------------
Unit        SysUtils
函数原型    function ExpandFileName(const FileName: string): string;
说明        设目前目录为    c:\windows\
            档案名称为        abc.txt
            则结果为        c:\windows\abc.txt
****        此函数并不是求abc.txt的所在路径.
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
            begin
             S:=ExpandFileName('abc.txt');
             Label1.Caption:=S;
            end;
范例
procedure TForm1.Button1Click(Sender: TObject)
begin
ListBox1.Items.Add(ExpandFileName(Edit1.Text));
end;

------------------------------------------------------------------
DirectoryExists 目录是否存在------------------------------------------------------------------
Unit
FileCtrl

uses FileCtrl;

procedure TForm1.Button1Click(Sender: TObject);
begin
if not DirectoryExists('c:\temp') then
if not CreateDir('C:\temp') then
raise Exception.Create('Cannot create c:\temp');
end;
--------------------------------------------------------
ForceDirectories 强行多层目录
---------------------------------------------------------
Unit FileCtrl
函数原型 function ForceDirectories(Dir: string): Boolean;

procedure TForm1.Button1Click(Sender: TObject);
var
Dir: string;
begin
Dir := 'C:\APPS\SALES\LOCAL';
if DirectoryExists(Dir) then
Label1.Caption := Dir + ' was created'
end;
--------------------------------------------------------
ExpandUNCFileName    同上(只是得到网路上的路径)
--------------------------------------------------------
Unit        SysUtils
函数原型    function ExpandUNCFileName(const FileName: string):string;
ExtractFileDir         分析字串中的路径
Unit    SysUtils
函数原型    function ExtractFileDir(const FileName: string): string;
说明        设S字串为    c:\windows\abc.txt
            则结果为    c:\windows
****        功能在於由任何部份传来的叁数,加以分析它的路径
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             P1:String;
            begin
             P1:='c:\windows\abc.txt';
             S:=ExtractFileDir(P1);
             Label1.Caption:=S;
            end;

            S=='c:\windows'

            P1:='abc.txt'
            S==''

            P1:='c:abc.txt'
            S=='c:'

            P1:='c:\abc.txt'
            S=='c:\'
--------------------------------------------------------
ExtractFileDrive    分析字串中的磁碟机名称
--------------------------------------------------------
Unit        SysUtils
函数原型    function ExtractFileDrive(const FileName: string): string;
****        功能同上,只是传回磁碟机名称.
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             P1:String;
            begin
             P1:='c:\windows\abc.txt';
             S:=ExtractFileDrive(P1);
             Label1.Caption:=S;
            end;

            S:='c:'

            P1:='abc.txt'
            S==''
--------------------------------------------------------
ExtractFileExt        分析字串中的档案名称的副档名
--------------------------------------------------------
Unit        SysUtils
函数原型    function ExtractFileExt(const FileName: string): string;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             P1:String;
            begin
             P1:='c:\windows\abc.txt';
             S:=ExtractFileExt(P1);
             Label1.Caption:=S;
            end;

            S=='.txt'

            P1:='c:\windows\abc'
            S==''
范例 MyFilesExtension := ExtractFileExt(MyFileName);
--------------------------------------------------------
ExtractFileName    分析字串中的档案名称(只传回档案名称)
--------------------------------------------------------
Unit        SysUtils
函数原型    function ExtractFileName(const FileName: string): string;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             P1:String;
            begin
             P1:='c:\windows\abc.txt';
             S:=ExtractFileName(P1);
             Label1.Caption:=S;
            end;

            S=='abc.txt'
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := ExtractFileName(SaveDialog1.FileName);
BackupName := ChangeFileExt(BackupName, '.BAK');
if not RenameFile(SaveDialog1.FileName, BackupName) then
raise Exception.Create('Unable to create backup file.');
end;
FileHandle := FileCreate(SaveDialog1.FileName);
{ Write out the number of rows and columns in the grid. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
--------------------------------------------------------
ExtractFilePath    分析字串中的路径
--------------------------------------------------------
Unit        SysUtils
函数原型    function ExtractFilePath(const FileName: string): string;
说明        设S字串为    c:\windows\abc.txt
            则结果为    c:\windows\
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             P1:String;
            begin
             P1:='c:\windows\abc.txt';
             S:=ExtractFilePath(P1);
             Label1.Caption:=S;
            end;
范例
begin
with Session do
begin
ConfigMode := cmSession;
try
AddStandardAlias('TEMPDB', ExtractFilePath(ParamStr(0)), 'PARADOX');
finally
ConfigMode := cmAll;
end;
end;
##ConfigMode, AddStandardAlias, ExtractFilePath example
--------------------------------------------------------
FileSearch            寻找档案在磁碟机中的正确路径
--------------------------------------------------------
Unit        SysUtils
函数原型    function FileSearch(const Name, DirList: string): string;
范例        var
             s:string;
            begin
             s:= FileSearch('abc.txt', 'c:\window\');
             Label1.Caption:=s;
            end;
说明        找到传回c:\window\abc.txt    找不到传回空字串.
范例
procedure TForm1.Button1Click(Sender: TObject);
var
buffer: array [0..255] of char;
FileToFind: string;
begin
GetWindowsDirectory(buffer, SizeOf(buffer));
FileToFind := FileSearch(Edit1.Text, GetCurrentDir + ';' + buffer);
if FileToFind = '' then
ShowMessage('Couldn''t find ' + Edit1.Text + '.')
else
ShowMessage('Found ' + FileToFind + '.');
end;
##FileSearch, ShowMessage Example
--------------------------------------------------------
FileAge            传回档案的日期及时间(DOS型态).
--------------------------------------------------------
Unit        SysUtils
函数原型    function FileAge(const FileName: string): Integer;
说明        就是档案总管中档案内容裹面的修改日期.
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
             FileDate1:Integer;
             DateTime1:TDateTime;
            begin
             FileDate1 := FileAge('c:\delphi_d\delphi_help1.txt');
             DateTime1 := FileDateToDateTime(FileDate1);
             S := DateTimeToStr(DateTime1);
             Label1.Caption:=S;
            end;
--------------------------------------------------------
FileDateToDateTime    将DOS型态的日期时间转换为TDateTime型态.
--------------------------------------------------------
Unit        SysUtils
函数原型    function FileDateToDateTime(FileDate: Integer):TDateTime;
-----------------------------------------------------------------------------
DateTimeToFileDate    将TDateTime型态的日期时间转换为    DOS型态.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function DateTimeToFileDate(DateTime: TDateTime):Integer;
FileGetDate        传回档案的日期及时间(DOS型态).
Unit        SysUtils
函数原型    function FileGetDate(Handle: Integer): Integer;
说明        就是档案总管中档案内容裹面的修改日期.
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             FileHandle:Integer;
             S: String;
             FileDate1:Integer;
             DateTime1:TDateTime;
            begin
             FileHandle :=FileOpen('c:\delphi_d\delphi_help2.txt',
                fmOpenReadWrite);
             if FileHandle > 0 then
                Begin
                    FileDate1 := FileGetDate(FileHandle);
                    DateTime1 := FileDateToDateTime(FileDate1);
                    S := DateTimeToStr(DateTime1);
                    FileClose(FileHandle);
                End
             else
                    S := 'Open File Error';
             Label1.Caption:=S;
            end;
-----------------------------------------------------------------------------
FileSetDate        设定档案的日期及时间(DOS型态).
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileSetDate(Handle: Integer; Age: Integer):    Integer;
说明        传回值为0表示成功.
-----------------------------------------------------------------------------
DeleteFile            删除档案
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function DeleteFile(const FileName: string): Boolean;
范例 一    DeleteFile('DELETE.ME');

范例 二 if FileExists(FileName) then
if MessageDlg('Do you really want to delete ' +
ExtractFileName(FileName) + '?'), []) = IDYes then
DeleteFile(FileName);
##FileExists, DeleteFile Example
-----------------------------------------------------------------------------
RenameFile        更改档名
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function RenameFile(const OldName, NewName: string):Boolean;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := ExtractFileName(SaveDialog1.FileName);
BackupName := ChangeFileExt(BackupName, '.BAK');
if not RenameFile(SaveDialog1.FileName, BackupName) then
raise Exception.Create('Unable to create backup file.');
end;
FileHandle := FileCreate(SaveDialog1.FileName);
{ Write out the number of rows and columns in the grid. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
-----------------------------------------------------------------------------
DiskFree            磁碟机剩馀空间(Bytes)
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function DiskFree(Drive: Byte): Integer;
范例        var
             S: string;
            begin
             S := IntToStr(DiskFree(0) div 1024) + ' Kbytes free.';
             Label1.Caption:=S;
            end;
说明        Drive
            0=目前磁碟机,1=A磁碟机,2=B磁碟机...传回值若为-1,表示磁碟机侦测错误.
范例
var
S: string;
AmtFree: Int64;
Total: Int64;
begin
AmtFree := DiskFree(0);
Total := DiskSize(0);
S := IntToStr(AmtFree div Total) + 'percent of the space on drive 0 is free: ' (AmtFree div 1024) + ' Kbytes free. ';
Canvas.TextOut(10, 10, S);
end;
##DiskFree, DiskSize Example
-----------------------------------------------------------------------------
DiskSize            磁碟机空间大小(Bytes)
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function DiskSize(Drive: Byte): Integer;
范例        var
             S: string;
            begin
             S := IntToStr(DiskSize(0) div 1024) + ' Kbytes free.';
             Label1.Caption:=S;
            end;
说明        Drive
            0=目前磁碟机,1=A磁碟机,2=B磁碟机....传回值若为-1,表示磁碟机侦测错误.
##DiskFree, DiskSize Example
-----------------------------------------------------------------------------
FileExists            判断档案是否存在.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileExists(const FileName: string): Boolean;
类似 FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := ExtractFileName(SaveDialog1.FileName);
BackupName := ChangeFileExt(BackupName, '.BAK');
if not RenameFile(SaveDialog1.FileName, BackupName) then
raise Exception.Create('Unable to create backup file.');
end;
FileHandle := FileCreate(SaveDialog1.FileName);
{ Write out the number of rows and columns in the grid. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
##FileExists, DeleteFile Example
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
-----------------------------------------------------------------------------
FileOpen            开档.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileOpen(const FileName: string; Mode:
                Integer):Integer;
****        开档失败传回-1.
说明        以下有关档案读取都属低阶,如Dos Int 21h中有关档案的部
            分.
            fmOpenRead            = {logcontent};
            fmOpenWrite            = ;
            fmOpenReadWrite        =

- + P A

- {logtitle}

      {Class} {publishtime}
{logsummary}
标签集:TAGS:{tags}
我要留言To Comment 阅读全文Read All | 回复Comments({commentcount}) 点击Count({viewcount})

{phototitle}

{phototitle}

  • 点击:Hits:{viewcount}
  • 回复:Comments:{commentcount}
  • 发表:PostTime:{posttime}

{logsummary}

{logtitle}

      {Class} {publishtime}
{logcontent}
标签集:TAGS:{tags}
回复Comments({commentcount}) 点击Count({viewcount})

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
;
            fmShareCompat        = {logcontent};
            fmShareExclusive        = $0010;
            fmShareDenyWrite        = $0020;
            fmShareDenyRead        = $0030;
            fmShareDenyNone        = $0040;

            fmOpenRead            Open for read access only.
            FmOpenWrite            Open for write access only.
            FmOpenReadWrite        Open for read and write access.
            fmShareCompat        Compatible with the way FCBs are
                                opened.
            fmShareExclusive        Read and write access is denied.
            fmShareDenyWrite        Write access is denied.
            fmShareDenyRead        Read access is denied.
            fmShareDenyNone        Allows full access for others.
范例
procedure OpenForShare(const FileName: String);
var
FileHandle : Integer;
begin
FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);
if FileHandle > 0 then
{valid file handle}
else
{Open error: FileHandle = negative DOS error code}
end;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead = FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
##FileOpen, FileSeek, FileRead Example
-----------------------------------------------------------------------------
FileCreate            建档
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileCreate(const FileName: string): Integer;

范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := ExtractFileName(SaveDialog1.FileName);
BackupName := ChangeFileExt(BackupName, '.BAK');
if not RenameFile(SaveDialog1.FileName, BackupName) then

raise Exception.Create('Unable to create backup file.');
end;
FileHandle := FileCreate(SaveDialog1.FileName);
{ Write out the number of rows and columns in the grid. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin

for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;

end;
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
-----------------------------------------------------------------------------
FileClose            关档
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    procedure FileClose(Handle: Integer);
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := ExtractFileName(SaveDialog1.FileName);
BackupName := ChangeFileExt(BackupName, '.BAK');
if not RenameFile(SaveDialog1.FileName, BackupName) then
raise Exception.Create('Unable to create backup file.');
end;
FileHandle := FileCreate(SaveDialog1.FileName);
{ Write out the number of rows and columns in the grid. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example

============================================
****        它是以Handle为叁数.
============================================
FileRead            读取档案
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileRead(Handle: Integer; var Buffer; Count: Integer):Integer;
范例
procedure TForm1.Button1Click(Sender: TObject);

var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead = FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
##FileOpen, FileSeek, FileRead Example
-----------------------------------------------------------------------------
FileWrite            写入档案
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := ExtractFileName(SaveDialog1.FileName);
BackupName := ChangeFileExt(BackupName, '.BAK');
if not RenameFile(SaveDialog1.FileName, BackupName) then
raise Exception.Create('Unable to create backup file.');
end;
FileHandle := FileCreate(SaveDialog1.FileName);
{ Write out the number of rows and columns in the grid. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount do
begin
for Y := 0 to StringGrid1.RowCount do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
-----------------------------------------------------------------------------
FileSeek            移动档案指标位置
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileSeek(Handle, Offset, Origin: Integer): Integer;
说明         Origin=0读/写指标由档案开头算起.
            Origin=1读/写指标由目前位置算起.
            Origin=2读/写指标移动到档案结束处.
****        功能与Dos Int 21h 插断 42h 的功能相同.
            失败传回-1.
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             FileHandle    : Integer;
             FileName    : String;
             Buffer        : PChar;
             S            : String;
             ReadBytes    : Integer;
            begin
             FileName:='c:\delphi_test\abc.ttt';
             S:='1234567890';
             if FileExists(FileName) then
                FileHandle := FileOpen(FileName, fmOpenReadWrite)
             else
                FileHandle := FileCreate(FileName);
             if FileHandle < 0 then
                Begin
                    MessageDlg('开档失败', mtInformation, [mbOk], 0);
                    Exit;
                End;

             GetMem(Buffer, 100);
             try
                StrPCopy(Buffer, S);
                FileWrite(FileHandle,Buffer^,10);
                FileSeek(FileHandle,4,0);
                ReadBytes:=FileRead(FileHandle, Buffer^, 100);
                Buffer[ReadBytes]:=#0;
                Label1.Caption:=IntToStr(ReadBytes)+' '+
                    StrPas(Buffer);
             finally
                FreeMem(Buffer);
             end;

             FileClose(FileHandle);
            end;

结果        存档後abc.ttt共有1234567890等十个Bytes.
            从第五位元开始读取,共读取六个位元.
            567890
            (位移是从0开始算起)

procedure TForm1.Button1Click(Sender: TObject);

var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead = FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
##FileOpen, FileSeek, FileRead Example
-----------------------------------------------------------------------------
FileGetAttr        档案属性
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileGetAttr(const FileName: string): Integer;
说明        faReadOnly    = ;
            faHidden        =

- + P A

- {logtitle}

      {Class} {publishtime}
{logsummary}
标签集:TAGS:{tags}
我要留言To Comment 阅读全文Read All | 回复Comments({commentcount}) 点击Count({viewcount})

{phototitle}

{phototitle}

  • 点击:Hits:{viewcount}
  • 回复:Comments:{commentcount}
  • 发表:PostTime:{posttime}

{logsummary}

{logtitle}

      {Class} {publishtime}
{logcontent}
标签集:TAGS:{tags}
回复Comments({commentcount}) 点击Count({viewcount})

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}
;
            faSysFile        = $00000004;
            faVolumeID    = $00000008;
            faDirectory    = $00000010;
            faArchive    = $00000020;
            faAnyFile    = $0000003F;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             S: String;
            begin
             S:=IntToStr(FileGetAttr('c:\delphi_d\delphi_help1.txt'));
             Label1.Caption := S;
            end;
-----------------------------------------------------------------------------
FileSetAttr            设定档案属性
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FileSetAttr(const FileName: string; Attr: Integer):
                Integer;
说明        设定成功传回0
-----------------------------------------------------------------------------
FindClose            结束FindFirst/FindNext
-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);

var
sr: TSearchRec;
FileAttrs: Integer;
begin
StringGrid1.RowCount := 1;
if CheckBox1.Checked then
FileAttrs := faReadOnly
else
FileAttrs := 0;
if CheckBox2.Checked then
FileAttrs := FileAttrs + faHidden;
if CheckBox3.Checked then
FileAttrs := FileAttrs + faSysFile;
if CheckBox4.Checked then
FileAttrs := FileAttrs + faVolumeID;
if CheckBox5.Checked then

FileAttrs := FileAttrs + faDirectory;
if CheckBox6.Checked then
FileAttrs := FileAttrs + faArchive;
if CheckBox7.Checked then

FileAttrs := FileAttrs + faAnyFile;

if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then

begin
with StringGrid1 do
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;
while FindNext(sr) = 0 do
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
RowCount := RowCount + 1;
Cells[1, RowCount-1] := sr.Name;

Cells[2, RowCount-1] := IntToStr(sr.Size);
end;
end;
FindClose(sr);
end;
end;
end;
##FindFirst, FindNext, FindClose Example
-----------------------------------------------------------------------------
FindFirst            寻找第一个符合的档案.
-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);

var
sr: TSearchRec;
FileAttrs: Integer;
begin
StringGrid1.RowCount := 1;
if CheckBox1.Checked then
FileAttrs := faReadOnly
else
FileAttrs := 0;
if CheckBox2.Checked then
FileAttrs := FileAttrs + faHidden;
if CheckBox3.Checked then
FileAttrs := FileAttrs + faSysFile;
if CheckBox4.Checked then
FileAttrs := FileAttrs + faVolumeID;
if CheckBox5.Checked then

FileAttrs := FileAttrs + faDirectory;
if CheckBox6.Checked then
FileAttrs := FileAttrs + faArchive;
if CheckBox7.Checked then

FileAttrs := FileAttrs + faAnyFile;

if FindFirst(Edit1.Text, FileAttrs, sr) = 0 then

begin
with StringGrid1 do
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
Cells[1,RowCount-1] := sr.Name;
Cells[2,RowCount-1] := IntToStr(sr.Size);
end;
while FindNext(sr) = 0 do
begin
if (sr.Attr and FileAttrs) = sr.Attr then
begin
RowCount := RowCount + 1;
Cells[1, RowCount-1] := sr.Name;
Cells[2, RowCount-1] := IntToStr(sr.Size);
end;
end;
FindClose(sr);
end;
end;
end;
##FindFirst, FindNext, FindClose Example
-----------------------------------------------------------------------------
FindNext            寻找下一个符合的档案.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    procedure FindClose(var F: TSearchRec);
函数原型    function FindFirst(const Path: string; Attr: Integer;
                var F: TSearchRec): Integer;
函数原型    function FindNext(var F: TSearchRec): Integer;
说明        成功传回0
范例        var
             SRec: TSearchRec;
            procedure TForm1.SearchClick(Sender: TObject);
            begin
             FindFirst('c:\delphi\bin\*.*', faAnyFile, SRec);
             Label1.Caption := SRec.Name + ' is ' + IntToStr(SRec.Size) +
                ' bytes in size';
            end;
            procedure TForm1.AgainClick(Sender: TObject);
            begin
             FindNext(SRec);
             Label1.Caption := SRec.Name + ' is ' + IntToStr(SRec.Size) +
                ' bytes in size';
            end;
            procedure TForm1.FormClose(Sender: TObject);
            begin
             FindClose(SRec);
            end

            TSearchRec = record
                Time: Integer;
                Size: Integer;
                Attr: Integer;
                Name: TFileName;
                xcludeAttr: Integer;
                FindHandle: THandle;
                FindData: TWin32FindData;
            end;

============================================
Floating-point conversion routines    浮点数转换函式
============================================
FloatToDecimal    将浮点数转换为十进位数.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    procedure FloatToDecimal(var Result: TFloatRec; const value;
                valueType: TFloatvalue; Precision, Decimals: Integer);
-----------------------------------------------------------------------------
FloatToStrF        将浮点数转换为格式化字串.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FloatToStrF(value: Extended; Format: TFloatFormat;
                Precision,Digits: Integer): string;
-----------------------------------------------------------------------------
FloatToStr            将浮点数转换为字串.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FloatToStr(value: Extended): string;
-----------------------------------------------------------------------------
FloatToText        将浮点数转换为格式化十进位.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FloatToText(Buffer: PChar; const value; valueType:
                TFloatvalue;Format: TFloatFormat; Precision, Digits:
                Integer): Integer;
-----------------------------------------------------------------------------
FloatToTextFmt    将浮点数转换为格式化十进位.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FloatToTextFmt(Buffer: PChar; const value;
                valueType: TFloatvalue; Format: PChar): Integer;
-----------------------------------------------------------------------------
FormatFloat        将浮点数转换为格式化字串.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function FormatFloat(const Format: string; value: Extended):
                string;
-----------------------------------------------------------------------------
StrToFloat            将字串转换为浮点数.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function StrToFloat(const S: string): Extended;
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             value:Double;
             S:String;
            begin
             S:=' 1234.56 ';
             value:=StrToFloat(S);
             Label1.Caption:=Format('转换为 [%9.3f]',[value]);
            end;

注意        若S字串含有非数字字元,会产生错误讯号.
-----------------------------------------------------------------------------
TextToFloat        将 null-terminated 字串转换为浮点数.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function TextToFloat(Buffer: PChar; var value; valueType:
                TFloatvalue): Boolean;

===========================================
Flow-control routines    流程控制常式
===========================================
Break                从 for, while, or repeat 终止跳出.
-----------------------------------------------------------------------------
Unit        System
函数原型        procedure Break;
范例        var
             S: string;
            begin
             while True do
                begin
                    ReadLn(S);
                    try
                        if S = '' then Break;
                        WriteLn(S);
                    finally
                        { do something for all cases }
                    end;
                end;
            end;
-----------------------------------------------------------------------------
Continue            从 for, while, or repeat 继续执行.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Continue;
范例        var
             F: File;
             i: integer;
            begin
             for i := 0 to (FileListBox1.Items.Count - 1) do
                begin
                 try
                 if FileListBox1.Selected[i] then
                 begin
                    if not FileExists(FileListBox1.Items.Strings[i]) then
                     begin
                     MessageDlg('file: ' +FileListBox1.Items.Strings[i]
                     + ' not found', mtError, [mbOk], 0);
                     Continue;
                     end;
                 AssignFile(F, FileListBox1.Items.Strings[i]);
                 Reset(F, 1);
                 ListBox1.Items.Add(IntToStr(FileSize(F)));
                 CloseFile(F);
                 end;
                 finally
                 { do something here }
                 end;
                end;
            end;
范例
var
F: File;
i: Integer;
begin
for i := 0 to (FileListBox1.Items.Count - 1) do begin
try
if FileListBox1.Selected[i] then
begin
if not FileExists(FileListBox1.Items.Strings[i]) then begin
MessageDlg('file: ' + FileListBox1.Items.Strings[i] +
' not found', mtError, [mbOk], 0);
Continue;
end;
AssignFile(F, FileListBox1.Items.Strings[i]);

Reset(F, 1);
ListBox1.Items.Add(IntToStr(FileSize(F)));
CloseFile(F);
end;
finally
{ do something here }
end;
end;
end;
## Continue, Items, Selected Example
-----------------------------------------------------------------------------
Exit                直接离开一个程序.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Exit;
-----------------------------------------------------------------------------
Halt                结束程式返回作业系统.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Halt [ ( Exitcode: Integer) ];
范例        begin
             if 1 = 1 then
                begin
                    if 2 = 2 then
                     begin
                        if 3 = 3 then
                         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.$
标签集:TAGS:
回复Comments() 点击Count()
);
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;
-----------------------------------------------------------------------------
OpenPictureDialog OpenDialog        开启档案.
-----------------------------------------------------------------------------
//SavePictureDialog1.DefaultExt := GraphicExtension(TBitmap);
//SavePictureDialog1.Filter := GraphicFilter(TBitmap);

procedure TForm1.Button1Click(Sender: TObject);
var
Done: Boolean;
begin
OpenPictureDialog1.DefaultExt := GraphicExtension(TIcon);
OpenPictureDialog1.FileName := GraphicFileMask(TIcon);
OpenPictureDialog1.Filter := GraphicFilter(TIcon);
OpenPictureDialog1.Options := [ofFileMustExist, ofHideReadOnly, ofNoChangeDir ];
while not Done do
begin
if OpenPictureDialog1.Execute then
begin
if not (ofExtensionDifferent in OpenPictureDialog1.Options) then

begin
Application.Icon.LoadFromFile(OpenPictureDialog1.FileName);
Done := True;
end
else
OpenPictureDialog1.Options := OpenPictureDialog1.Options - ofExtensionDifferent;
end
else { User cancelled }
Done := True;
end;
end;

## Eof, Read, Write Example
-----------------------------------------------------------------------------
Erase                删除档案.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Erase(var F);
说明        要先关档後才可以执行.
范例        procedure TForm1.Button1Click(Sender: TObject);
            var
             F: Textfile;
            begin
             OpenDialog1.Title := 'Delete File';
             if OpenDialog1.Execute then
                begin
                 AssignFile(F, OpenDialog1.FileName);
                 try
                    Reset(F);
                    if MessageDlg('Erase ' + OpenDialog1.FileName +
                    '?',mtConfirmation,    [mbYes, mbNo], 0) = mrYes then
                     begin
                        CloseFile(F);
                        Erase(F);
                     end;
                 except
                    on EInOutError do
                     MessageDlg('File I/O error.', mtError, [mbOk], 0);
                 end;
                end;
            end;
Example
procedure TForm1.Button1Click(Sender: TObject);

var
F: Textfile;
begin
OpenDialog1.Title := 'Delete File';
if OpenDialog1.Execute then begin
AssignFile(F, OpenDialog1.FileName);
try
Reset(F);
if MessageDlg('Erase ' + OpenDialog1.FileName + '?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
CloseFile(F);
Erase(F);
end;
except
on EInOutError do

MessageDlg('File I/O error.', mtError, [mbOk], 0);
end;
end;
end;
##Erase, OpenDialog.Title, OpenDialog.FileName Example
-----------------------------------------------------------------------------
Rename            更改档名.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Rename(var F; Newname);
范例        uses Dialogs;
            var
             f : file;
            begin
             OpenDialog1.Title := 'Choose a file... ';
             if OpenDialog1.Execute then
                begin
                 SaveDialog1.Title := 'Rename to...';
                 if SaveDialog1.Execute then
                    begin
                     AssignFile(f, OpenDialog1.FileName);
                     Canvas.TextOut(5, 10, 'Renaming ' +
                        OpenDialog1.FileName +' to ' +
                        SaveDialog1.FileName);
                     Rename(f, SaveDialog1.FileName);
                    end;
                end;
            end;
Example
uses Dialogs;
var

f : file;
begin
OpenDialog1.Title := 'Choose a file... ';
if OpenDialog1.Execute then begin
SaveDialog1.Title := 'Rename to...';
if SaveDialog1.Execute then begin
AssignFile(f, OpenDialog1.FileName);
Canvas.TextOut(5, 10, 'Renaming ' + OpenDialog1.FileName + ' to ' +
SaveDialog1.FileName);
Rename(f, SaveDialog1.FileName);
end;
end;
end;
-----------------------------------------------------------------------------
GetDir                传回指定磁碟机的目录.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure GetDir(D: Byte; var S: string);
说明        D
            0=目前磁碟机,1=A磁碟机,2=B磁碟机....
            **此函式不检查磁碟机错误.
范例        var
             s : string;
            begin
             GetDir(0,s);    { 0 = Current drive }
             MessageDlg('Current drive and directory: ' + s,
                mtInformation, [mbOk] , 0);
            end;
-----------------------------------------------------------------------------
MkDir                建立子目录.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure MkDir(S: string);
范例        uses Dialogs;
            begin
             {$I-}
             { Get directory name from TEdit control }
             MkDir(Edit1.Text);
             if IOResult <> 0 then
                MessageDlg('Cannot create directory', mtWarning,
                    [mbOk], 0)
             else
                MessageDlg('New directory created', mtInformation,
                    [mbOk], 0);
            end;
-----------------------------------------------------------------------------
RmDir                删除一个空的子目录.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure RmDir(S: string);
范例        uses Dialogs;
            begin
             {$I-}
             { Get directory name from TEdit control }
             RmDir(Edit1.Text);
             if IOResult <> 0 then
                MessageDlg('Cannot remove directory', mtWarning,
                    [mbOk], 0)
             else
                MessageDlg('Directory removed', mtInformation, [mbOk],
                    0);
            end;
-----------------------------------------------------------------------------
ChDir                改变目前目录.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure ChDir(S: string);
范例        begin
             {$I-}
             { Change to directory specified in Edit1 }
             ChDir(Edit1.Text);
             if IOResult <> 0 then
                MessageDlg('Cannot find directory', mtWarning,[mbOk],
                    0);
            end;

==============================================
Memory-management routines    记忆体管理常式
==============================================
AllocMem            配置记忆体.
-----------------------------------------------------------------------------
Unit        SysUtils
函数原型    function AllocMem(Size: Cardinal): Pointer;
说明        FreeMem释放记忆体.
-----------------------------------------------------------------------------
GetHeapStatus    传回目前Heap区的记忆体配置状态.
-----------------------------------------------------------------------------
Unit        System
函数原型    function GetHeapStatus: THeapStatus;
-----------------------------------------------------------------------------
GetMemoryManager    传回目前Heap区的记忆体配置    的进入点.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure GetMemoryManager(var MemMgr:
                TMemoryManager);
EXample
var

GetMemCount: Integer;
FreeMemCount: Integer;
ReallocMemCount: Integer;
OldMemMgr: TMemoryManager;

function NewGetMem(Size: Integer): Pointer;
begin
Inc(GetMemCount);
Result := OldMemMgr.GetMem(Size);
end;

function NewFreeMem(P: Pointer): Integer;
begin
Inc(FreeMemCount);
Result := OldMemMgr.FreeMem(P);
end;

function NewReallocMem(P: Pointer; Size: Integer): Pointer;
begin

Inc(ReallocMemCount);
Result := OldMemMgr.ReallocMem(P, Size);
end;

const
NewMemMgr: TMemoryManager = (
GetMem: NewGetMem;
FreeMem: NewFreeMem;
ReallocMem: NewReallocMem);

procedure SetNewMemMgr;
begin
GetMemoryManager(OldMemMgr);
SetMemoryManager(NewMemMgr);
end;
## GetMemoryManager, SetMemoryManager Example
-----------------------------------------------------------------------------
ReAllocMem        重新配置记忆体.
-----------------------------------------------------------------------------
Unit        Systems
函数原型    procedure ReallocMem(var P: Pointer; Size: Integer);
-----------------------------------------------------------------------------
SetMemoryManager    设定目前Heap区的记忆体配置    的进入点.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure SetMemoryManager(const MemMgr:
                TMemoryManager);

            type
             THeapStatus = record
                TotalAddrSpace: Cardinal;s
                TotalUncommitted: Cardinal;
                TotalCommitted: Cardinal;
                TotalAllocated: Cardinal;
                TotalFree: Cardinal;
                FreeSmall: Cardinal;
                FreeBig: Cardinal;
                Unused: Cardinal;
                Overhead: Cardinal;
                HeapErrorCode: Cardinal;
             end;

            type
             PMemoryManager = ^TMemoryManager;
             TMemoryManager = record
                GetMem: function(Size: Integer): Pointer;
                FreeMem: function(P: Pointer): Integer;
                ReallocMem: function(P: Pointer; Size: Integer): Pointer;
             end;
Example
var

GetMemCount: Integer;
FreeMemCount: Integer;
ReallocMemCount: Integer;
OldMemMgr: TMemoryManager;

function NewGetMem(Size: Integer): Pointer;
begin
Inc(GetMemCount);
Result := OldMemMgr.GetMem(Size);
end;

function NewFreeMem(P: Pointer): Integer;
begin
Inc(FreeMemCount);
Result := OldMemMgr.FreeMem(P);
end;

function NewReallocMem(P: Pointer; Size: Integer): Pointer;
begin

Inc(ReallocMemCount);
Result := OldMemMgr.ReallocMem(P, Size);
end;

const
NewMemMgr: TMemoryManager = (
GetMem: NewGetMem;
FreeMem: NewFreeMem;
ReallocMem: NewReallocMem);

procedure SetNewMemMgr;
begin
GetMemoryManager(OldMemMgr);
SetMemoryManager(NewMemMgr);
end;
##GetMemoryManager, SetMemoryManager Example

======================================
Miscellaneous routines    其他常式
======================================
Exclude            删除一组元素中的一个元素.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Exclude(var S: set of T;I:T);
说明        删除S中的I元素.
-----------------------------------------------------------------------------
FillChar            填入元素.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure FillChar(var X; Count: Integer; value);
说明        以value填入X中Count个.

范例 Example
var
S: array[0..79] of char;
begin
{ Set to all spaces }
FillChar(S, SizeOf(S), Ord(' '));
MessageDlg(S, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
Hi                    传回高位元数字.
-----------------------------------------------------------------------------
Unit        System
函数原型    function Hi(X): Byte;
范例        var B: Byte;
            begin
             B := Hi($1234);        { $12 }
            end;
-----------------------------------------------------------------------------
Include            加入一个元素到一组元素.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Include(var S: set of T; I:T);
说明        加入I元素到S中.
-----------------------------------------------------------------------------
Lo                    传回高位元数字.
-----------------------------------------------------------------------------
Unit        System
函数原型    function Lo(X): Byte;
范例        var B: Byte;
            begin
             B := Lo($1234);        { $34 }
            end;
-----------------------------------------------------------------------------
Move                从来源变数拷贝n个Bytes到目的变数.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Move(var Source, Dest; Count: Integer);
范例        var
             A: array[1..4] of Char;
             B: Integer;
            begin
             Move(A, B, SizeOf(B));
             { SizeOf = safety! }
            end;
-----------------------------------------------------------------------------
ParamCount        直接由执行档後加上传入变数的个数.(arj.exe a dr.arj d:*.*)
-----------------------------------------------------------------------------
Unit        System
函数原型    function ParamCount: Integer;
说明        如上例则传回3
Example
var

I: Integer;
ListItem: string;
begin
for I := 0 to IBQuery1.ParamCount - 1 do
begin
ListItem := ListBox1.Items[I];
case IBQuery1.Params[I].DataType of
ftString:
IBQuery1.Params[I].AsString := ListItem;
ftSmallInt:
IBQuery1.Params[I].AsSmallInt := StrToIntDef(ListItem, 0);
ftInteger:
IBQuery1.Params[I].AsInteger := StrToIntDef(ListItem, 0);
ftWord:

IBQuery1.Params[I].AsWord := StrToIntDef(ListItem, 0);
ftBoolean:
begin
if ListItem = 'True' then
IBQuery1.Params[I].AsBoolean := True
else
IBQuery1.Params[I].AsBoolean := False;
end;
ftFloat:
IBQuery1.Params[I].AsFloat := StrToFloat(ListItem);
ftCurrency:
IBQuery1.Params[I].AsCurrency := StrToFloat(ListItem);
ftBCD:

IBQuery1.Params[I].AsBCD := StrToCurr(ListItem);
ftDate:
IBQuery1.Params[I].AsDate := StrToDate(ListItem);
ftTime:
IBQuery1.Params[I].AsTime := StrToTime(ListItem);
ftDateTime:
IBQuery1.Params[I].AsDateTime := StrToDateTime(ListItem);
end;
end;
end;
##ParamCount, DataType, StrToIntDef, AsXXX Example
-----------------------------------------------------------------------------
ParamStr
-----------------------------------------------------------------------------
Unit        System
函数原型    function ParamStr(Index: Integer): string;
说明        ParamStr(0);传回执行档的名称及完整目录.
            (C:\ZIP\ARJ.EXE)
范例
var
I: Word;
Y: Integer;
begin
Y := 10;
for I := 1 to ParamCount do
begin
Canvas.TextOut(5, Y, ParamStr(I));
Y := Y + Canvas.TextHeight(ParamStr(I)) + 5;
end;
end;

Example
procedure TForm1.FormCreate(Sender: TObject);

var
i: Integer;
for i := 0 to ParamCount -1 do
begin
if LowerCase(ParamStr(i)) = 'beep' then
Windows.Beep(10000,1000)
else
if (LowerCase(ParamStr(i)) = 'exit' then
Application.Terminate;
end;
end;
##ParamCount, ParamStr Example
-----------------------------------------------------------------------------
Random            乱数
-----------------------------------------------------------------------------
Unit        System
函数原型    function Random [ ( Range: Integer) ];
说明        0<=X<Range
范例        var
             I: Integer;
            begin
             Randomize;
             for I := 1 to 50 do
                begin
                 { Write to window at random locations }
                 Canvas.TextOut(Random(Width), Random(Height),
                    'Boo!');
                end;
            end;
-----------------------------------------------------------------------------
Randomize        乱数种子.
-----------------------------------------------------------------------------
Unit        System
函数原型    procedure Randomize;
Example
var

I: Integer;
begin
Randomize;
for I := 1 to 50 do begin
{ Write to window at random locations }
Canvas.TextOut(Random(Width), Random(Height), 'Boo!');
end;
end;
##Randomize, Random Example
-----------------------------------------------------------------------------
SizeOf                传回X变数的位元数.
-----------------------------------------------------------------------------
Unit        System
函数原型    function SizeOf(X): Integer;
范例        type
             CustRec = record
                Name: string[30];
                Phone: string[14];
             end;
            var
             P: ^CustRec;
            begin
             GetMem(P, SizeOf(CustRec));
             Canvas.TextOut(10, 10, 'The size of the record is ' +
                IntToStr(SizeOf(CustRec)));
             FreeMem (P, SizeOf(CustRec));
             Readln;
            end;
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}