DELPHI常用函数集介绍
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($2A30)=$2A lo(I)lo($2A30)=$30 random(n)产生[0,n)间的随机整数 sizeof(name)求出某类型或变量在内存中占用的字节数 swap(num)swap($3621)=$2136 ================================ Arithmeticroutines数学运算 ================================ Abs绝对值 --------------------------------------------------------- UnitSystem 函数原型functionAbs(X); 说明X为整数or实数. 范例 var r:Real; i:Integer; begin r:=Abs(-2.3);{2.3} i:=Abs(-157);{157} end; ---------------------------------------------------------- ArcTan三角函数 ---------------------------------------------------------- 范例 Cos varR: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,'TheSinofPiis'+S); end; ---------------------------------------------------------- UnitSystem 函数原型functionArcTan(X:Extended):Extended; 函数原型functionCos(X:Extended):Extended; 函数原型functionSin(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,'TheSinofPiis'+S); end; ---------------------------------------------------------- Frac求一个实数的小数部份 ---------------------------------------------------------- UnitSystem 函数原型functionFrac(X:Real):Real; 说明X为实数. 范例var R:Real; begin R:=Frac(123.456);{0.456} R:=Frac(-123.456);{-0.456} end; ------------------------------------------ Int求一个实数的整数部份 ------------------------------------------ UnitSystem 函数原型functionInt(X:Real):Real; 说明X为实数. 范例var R:Real; begin R:=Int(123.456);{123.0} R:=Int(-123.456);{-123.0} end; ------------------------------------------ Pi就是数学的Pi ------------------------------------------ UnitSystem 函数原型functionPi:Extended; 说明它是一个函数,但我们就把它当作是预设的变数来用吧! Pi=3.1415926535897932385 ------------------------------------------ SqrX的平方 ----------------------------------------- 范例 var S,Temp:string; begin Str(Sqr(5.0):3:1,Temp); S:='5squaredis'+Temp+#13#10; Str(Sqrt(2.0):5:4,Temp); S:=S+'Thesquarerootof2is'+Temp; MessageDlg(S,mtInformation,[mbOk],0); end; ----------------------------------------- SqrtX的平方根 ------------------------------------------ UnitSystem 函数原型functionSqr(X:Extended):Extended; 函数原型functionSqrt(X:Extended):Extended; 范例var S,Temp:string; begin Str(Sqr(5.0):3:1,Temp); S:='5squaredis'+Temp+#13#10; Str(Sqrt(2.0):5:4,Temp); S:=S+'Thesquarerootof2is'+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指数 ------------------------------------------ UnitSystem 函数原型functionLn(X:Real):Real; 函数原型functionExp(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; ------------------------------------------ Dateandtimeroutines日期及时间函数 ------------------------------------------ Date传回目前的日期 UnitSysUtils 函数原型functionDate:TDateTime; 范例procedureTForm1.Button1Click(Sender:TObject); begin Label1.Caption:='Todayis'+DateToStr(Date); end; ------------------------------------------ DateTimeToStr日期时间转换成内定型字串(1996/12/2009:12:20PM) ------------------------------------------ UnitSysUtils 函数原型functionDateTimeToStr(DateTime:TDateTime):string; 范例procedureTForm1.Button1Click(Sender:TObject); begin Label1.Caption:=DateTimeToStr(Now); end; -------------------------------------------------------- DateTimeToString日期时间转换成自定型字串 ------------------------------------------------------- UnitSysUtils 函数原型procedureDateTimeToString(varResult:string;constFormat: string;DateTime:TDateTime); 范例procedureTForm1.FormCreate(Sender:TObject); var s:string; begin DateTimeToString(s,'dddd,mmmmd,yyyy"at"hh:mm AM/PM',Now); Label1.Caption:=s; end; 结果星期五,十二月20,1996at09:20PM ----------------------------------------------------------------------------- ****Format格式叁考下面.FormatDateTime. -------------------------------------------------------- DateToStr日期转换成内定型字串.(1996/12/20) -------------------------------------------------------- UnitSysUtils 函数原型functionDateToStr(Date:TDateTime):string; 范例 procedureTForm1.Button1Click(Sender:TObject); begin Label1.Caption:='Todayis'+DateToStr(Date); end; #Date,DateToStrExample -------------------------------------------------------- DayOfWeek求叁数日期是星期几. -------------------------------------------------------- UnitSysUtils 函数原型functionDayOfWeek(Date:TDateTime):Integer; 说明传回值是一整数,1~7. 星期日为1. 范例 procedureTForm1.Button1Click(Sender:TObject); var ADate:TDateTime; days:array[1..7]ofstring; 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+'isa'+days[DayOfWeek(ADate)]; end; #StrToDate,DayOfWeekExample -------------------------------------------------------- DecodeDate将TDateTime型态的日期变数,转为Word型态. -------------------------------------------------------- 范例 procedureTForm1.Button1Click(Sender:TObject); var Present:TDateTime; Year,Month,Day,Hour,Min,Sec,MSec:Word; begin Present:=Now; DecodeDate(Present,Year,Month,Day); Label1.Caption:='TodayisDay'+IntToStr(Day)+'ofMonth' +IntToStr(Month)+'ofYear'+IntToStr(Year); DecodeTime(Present,Hour,Min,Sec,MSec); Label2.Caption:='ThetimeisMinute'+IntToStr(Min)+'ofHour' +IntToStr(Hour); end; #DecodeDate,DecodeTimeExample -------------------------------------------------------- DecodeTime将TDateTime型态的时间变数,转为Word型态. -------------------------------------------------------- UnitSysUtils 函数原型procedureDecodeDate(Date:TDateTime;varYear,Month,Day:Word); 函数原型procedureDecodeTime(Time:TDateTime;varHour,Min,Sec,MSec:Word); 范例procedureTForm1.Button1Click(Sender:TObject); var Present:TDateTime; Year,Month,Day,Hour,Min,Sec,MSec:Word; begin Present:=Now; DecodeDate(Present,Year,Month,Day); Label1.Caption:='TodayisDay'+IntToStr(Day)+'of Month'+IntToStr(Month)+'ofYear'+IntToStr(Year); DecodeTime(Present,Hour,Min,Sec,MSec); Label2.Caption:='ThetimeisMinute'+IntToStr(Min)+'of Hour'+IntToStr(Hour); end; -------------------------------------------------------- EncodeDate将Word型态的日期变数,转为TDateTime型态. -------------------------------------------------------- 范例 procedureTForm1.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型态. -------------------------------------------------------- UnitSysUtils 函数原型functionEncodeDate(Year,Month,Day:Word):TDateTime; 函数原型functionEncodeTime(Hour,Min,Sec,MSec:Word): TDateTime; 范例procedureTForm1.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; 范例 procedureTForm1.Button1Click(Sender:TObject); var MyTime:TDateTime; begin MyTime:=EncodeTime(0,45,45,7); Label1.Caption:=TimeToStr(MyTime); end; -------------------------------------------------------- FormatDateTime将日期时间依Format的格式转换给一字串. -------------------------------------------------------- UnitSysUtils 函数原型functionFormatDateTime(constFormat:string;DateTime: TDateTime):string; ****类似DateTimeToString. Format格式 c内定值ShortDateFormat的格式.(1996/12/2009:20:15PM). 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:20PM) tt时间.(09:20:15PM) am/pm单独显示amorpm.(若大写,则显示大写) a/p单独显示aorp. 范例 Thefollowingexampleassigns'ThemeetingisonWednesday,February15,1995at10:30AM'tothestringvariableS. S:=FormatDateTime('"Themeetingison"dddd,mmmmd,yyyy,"at"hh:mmAM/PM', StrToDateTime('2/15/9510:30am'));//??? -------------------------------------------------------- Now传回目前的日期时间. -------------------------------------------------------- UnitSysUtils 函数原型functionNow:TDateTime; 范例 procedureTForm1.Button1Click(Sender:TObject); begin Label1.Caption:=DateTimeToStr(Now); end; #Now,DateTimeToStrExample -------------------------------------------------------- StrToDate将字串转为TDateTime型态的日期. -------------------------------------------------------- UnitSysUtils 函数原型functionStrToDate(constS:string):TDateTime; 范例procedureTForm1.Button1Click(Sender:TObject); var ADate:TDateTime; begin ADate:=StrToDate(Edit1.Text); Label1.Caption:=DateToStr(ADate); end; 范例 procedureTForm1.Button1Click(Sender:TObject); var ADate:TDateTime; days:array[1..7]ofstring; 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+'isa'+days[DayOfWeek(ADate)]; end; #StrToDate,DayOfWeekExample -------------------------------------------------------- StrToDateTime将字串转为TDateTime型态的日期时间. -------------------------------------------------------- UnitSysUtils 函数原型functionStrToDateTime(constS:string):TDateTime; 范例 procedureTForm1.Button1Click(Sender:TObject); var ADateAndTime:TDateTime; begin ADateAndTime:=StrToDateTime(Edit1.Text); Table1.FieldByName('TimeStamp').AsDateTime:=ADateAndTime; end; -------------------------------------------------------- StrToTime将字串转为TDateTime型态的时间. -------------------------------------------------------- UnitSysUtils 函数原型functionStrToTime(constS:string):TDateTime; 范例 procedureTForm1.Button1Click(Sender:TObject); var ATime:TDateTime; begin ATime:=StrToTime(Edit1.Text); ifATime<0.50then ShowMessage('GoodMorning') else ShowMessage('GoodAfternoon'); end; -------------------------------------------------------- Time传回目前的时间. -------------------------------------------------------- UnitSysUtils 函数原型functionTime:TDateTime; 范例 procedureTForm1.Timer1Timer(Sender:TObject); var DateTime:TDateTime; str:string; begin DateTime:=Time;//storethecurrentdateandtime str:=TimeToStr(DateTime);//convertthetimeintoastring Caption:=str;//displaythetimeontheform'scaption {NoteThiscouldhavebeendonewiththefollowinglineofcode: Caption:=TimeToStr(Time);} end; #Time,TimeToStrExample -------------------------------------------------------- TimeToStr时间转换成内定型字串.(09:20:15PM) -------------------------------------------------------- UnitSysUtils 函数原型functionTimeToStr(Time:TDateTime):string; GetMemprocedure配置记忆体程序 New配置指位器P的记忆体空间, 大小为P所指型态的大小. -------------------------------------------------------- Dispose释放New所配置的记忆体. -------------------------------------------------------- UnitSystem 函数原型procedureNew(varP:Pointer); 函数原型procedureDispose(varP: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:='Helloworld'; P^.Count:=1; List:=P; ... Dispose(P); … end; 范例 type Str18=string[18]; var P:^Str18; begin New(P); P^:='Nowyouseeit...'; Dispose(P);{Nowyoudon'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所配置的记忆体. -------------------------------------------------------- UnitSystem 函数原型procedureGetMem(varP:Pointer;Size:Integer); 函数原型procedureFreeMem(varP: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-managementroutines档案管理常式 ==================================== -------------------------------------------------------- ChangeFileExt变更档案的副档名 -------------------------------------------------------- UnitSysUtils 函数原型functionChangeFileExt(constFileName,Extension:string): string; 范例procedureTForm1.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' 范例 procedureTForm1.ConvertIcon2BitmapClick(Sender:TObject); var s:string; Icon:TIcon; begin OpenDialog1.DefaultExt:='.ICO'; OpenDialog1.Filter:='icons(*.ico)|*.ICO'; OpenDialog1.Options:=[ofOverwritePrompt,ofFileMustExist,ofHideReadOnly]; ifOpenDialog1.Executethen 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+'Savedto'+s); finally Icon.Free; end; end; end; #SaveToFile,Create,Height,Width,Canvas,ChangeFileExtexample -------------------------------------------------------- ExpandFileName将档案名称加在目前所在之路径全名之後 -------------------------------------------------------- UnitSysUtils 函数原型functionExpandFileName(constFileName:string):string; 说明设目前目录为c:/windows档案名称为abc.txt 则结果为c:/windows/abc.txt ****此函数并不是求abc.txt的所在路径. 范例procedureTForm1.Button1Click(Sender:TObject); var S:String; begin S:=ExpandFileName('abc.txt'); Label1.Caption:=S; end; 范例 procedureTForm1.Button1Click(Sender:TObject) begin ListBox1.Items.Add(ExpandFileName(Edit1.Text)); end; ------------------------------------------------------------------ DirectoryExists目录是否存在------------------------------------------------------------------ Unit FileCtrl usesFileCtrl; procedureTForm1.Button1Click(Sender:TObject); begin ifnotDirectoryExists('c:/temp')then ifnotCreateDir('C:/temp')then raiseException.Create('Cannotcreatec:/temp'); end; -------------------------------------------------------- ForceDirectories目录 --------------------------------------------------------- UnitFileCtrl 函数原型functionForceDirectories(Dir:string):Boolean; procedureTForm1.Button1Click(Sender:TObject); var Dir:string; begin Dir:='C:/APPS/SALES/LOCAL'; ifDirectoryExists(Dir)then Label1.Caption:=Dir+'wascreated' end; -------------------------------------------------------- ExpandUNCFileName同上(只是得到网路上的路径) -------------------------------------------------------- UnitSysUtils 函数原型functionExpandUNCFileName(constFileName:string):string; ExtractFileDir分析字串中的路径 UnitSysUtils 函数原型functionExtractFileDir(constFileName:string):string; 说明设S字串为c:/windows/abc.txt 则结果为c:/windows ****功能在於由任何部份传来的叁数,加以分析它的路径 范例procedureTForm1.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分析字串中的磁碟机名称 -------------------------------------------------------- UnitSysUtils 函数原型functionExtractFileDrive(constFileName:string):string; ****功能同上,只是传回磁碟机名称. 范例procedureTForm1.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分析字串中的档案名称的副档名 -------------------------------------------------------- UnitSysUtils 函数原型functionExtractFileExt(constFileName:string):string; 范例procedureTForm1.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分析字串中的档案名称(只传回档案名称) -------------------------------------------------------- UnitSysUtils 函数原型functionExtractFileName(constFileName:string):string; 范例procedureTForm1.Button1Click(Sender:TObject); var S:String; P1:String; begin P1:='c:/windows/abc.txt'; S:=ExtractFileName(P1); Label1.Caption:=S; end; S=='abc.txt' 范例 procedureTForm1.Button1Click(Sender:TObject); var BackupName:string; FileHandle:Integer; StringLen:Integer; X:Integer; Y:Integer; begin ifSaveDialog1.Executethen begin ifFileExists(SaveDialog1.FileName)then begin BackupName:=ExtractFileName(SaveDialog1.FileName); BackupName:=ChangeFileExt(BackupName,'.BAK'); ifnotRenameFile(SaveDialog1.FileName,BackupName)then raiseException.Create('Unabletocreatebackupfile.'); end; FileHandle:=FileCreate(SaveDialog1.FileName); {Writeoutthenumberofrowsandcolumnsinthegrid.} FileWrite(FileHandle, StringGrid1.ColCount,SizeOf(StringGrid1.ColCount)); FileWrite(FileHandle, StringGrid1.RowCount,SizeOf(StringGrid1.RowCount)); forX:=0toStringGrid1.ColCount?1do begin forY:=0toStringGrid1.RowCount?1do begin {Writeoutthelengthofeachstring,followedbythestringitself.} 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,ExtractFileNameExample -------------------------------------------------------- ExtractFilePath分析字串中的路径 -------------------------------------------------------- UnitSysUtils 函数原型functionExtractFilePath(constFileName:string):string; 说明设S字串为c:/windows/abc.txt 则结果为c:/windows范例procedureTForm1.Button1Click(Sender:TObject); var S:String; P1:String; begin P1:='c:/windows/abc.txt'; S:=ExtractFilePath(P1); Label1.Caption:=S; end; 范例 begin withSessiondo begin ConfigMode:=cmSession; try AddStandardAlias('TEMPDB',ExtractFilePath(ParamStr(0)),'PARADOX'); finally ConfigMode:=cmAll; end; end; ##ConfigMode,AddStandardAlias,ExtractFilePathexample -------------------------------------------------------- FileSearch寻找档案在磁碟机中的正确路径 -------------------------------------------------------- UnitSysUtils 函数原型functionFileSearch(constName,DirList:string):string; 范例var s:string; begin s:=FileSearch('abc.txt','c:/window/'); Label1.Caption:=s; end; 说明找到传回c:/window/abc.txt找不到传回空字串. 范例 procedureTForm1.Button1Click(Sender:TObject); var buffer:array[0..255]ofchar; FileToFind:string; begin GetWindowsDirectory(buffer,SizeOf(buffer)); FileToFind:=FileSearch(Edit1.Text,GetCurrentDir+';'+buffer); ifFileToFind='then ShowMessage('Couldn'tfind'+Edit1.Text+'.') else ShowMessage('Found'+FileToFind+'.'); end; ##FileSearch,ShowMessageExample -------------------------------------------------------- FileAge传回档案的日期及时间(DOS型态). -------------------------------------------------------- UnitSysUtils 函数原型functionFileAge(constFileName:string):Integer; 说明就是档案总管中档案内容裹面的修改日期. 范例procedureTForm1.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型态. -------------------------------------------------------- UnitSysUtils 函数原型functionFileDateToDateTime(FileDate:Integer):TDateTime; ----------------------------------------------------------------------------- DateTimeToFileDate将TDateTime型态的日期时间转换为DOS型态. ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionDateTimeToFileDate(DateTime:TDateTime):Integer; FileGetDate传回档案的日期及时间(DOS型态). UnitSysUtils 函数原型functionFileGetDate(Handle:Integer):Integer; 说明就是档案总管中档案内容裹面的修改日期. 范例procedureTForm1.Button1Click(Sender:TObject); var FileHandle:Integer; S:String; FileDate1:Integer; DateTime1:TDateTime; begin FileHandle:=FileOpen('c:/delphi_d/delphi_help2.txt', fmOpenReadWrite); ifFileHandle>0then Begin FileDate1:=FileGetDate(FileHandle); DateTime1:=FileDateToDateTime(FileDate1); S:=DateTimeToStr(DateTime1); FileClose(FileHandle); End else S:='OpenFileError'; Label1.Caption:=S; end; ----------------------------------------------------------------------------- FileSetDate设定档案的日期及时间(DOS型态). ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionFileSetDate(Handle:Integer;Age:Integer):Integer; 说明传回值为0表示成功. ----------------------------------------------------------------------------- DeleteFile删除档案 ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionDeleteFile(constFileName:string):Boolean; 范例一DeleteFile('DELETE.ME'); 范例二ifFileExists(FileName)then ifMessageDlg('Doyoureallywanttodelete'+ ExtractFileName(FileName)+'?'),[])=IDYesthen DeleteFile(FileName); ##FileExists,DeleteFileExample ----------------------------------------------------------------------------- RenameFile更改档名 ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionRenameFile(constOldName,NewName:string):Boolean; 范例 procedureTForm1.Button1Click(Sender:TObject); var BackupName:string; FileHandle:Integer; StringLen:Integer; X:Integer; Y:Integer; begin ifSaveDialog1.Executethen begin ifFileExists(SaveDialog1.FileName)then begin BackupName:=ExtractFileName(SaveDialog1.FileName); BackupName:=ChangeFileExt(BackupName,'.BAK'); ifnotRenameFile(SaveDialog1.FileName,BackupName)then raiseException.Create('Unabletocreatebackupfile.'); end; FileHandle:=FileCreate(SaveDialog1.FileName); {Writeoutthenumberofrowsandcolumnsinthegrid.} FileWrite(FileHandle, StringGrid1.ColCount,SizeOf(StringGrid1.ColCount)); FileWrite(FileHandle, StringGrid1.RowCount,SizeOf(StringGrid1.RowCount)); forX:=0toStringGrid1.ColCount?1do begin forY:=0toStringGrid1.RowCount?1do begin {Writeoutthelengthofeachstring,followedbythestringitself.} 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) ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionDiskFree(Drive:Byte):Integer; 范例var S:string; begin S:=IntToStr(DiskFree(0)div1024)+'Kbytesfree.'; 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(AmtFreedivTotal)+'percentofthespaceondrive0isfree:'(AmtFreediv1024)+'Kbytesfree.'; Canvas.TextOut(10,10,S); end; ##DiskFree,DiskSizeExample ----------------------------------------------------------------------------- DiskSize磁碟机空间大小(Bytes) ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionDiskSize(Drive:Byte):Integer; 范例var S:string; begin S:=IntToStr(DiskSize(0)div1024)+'Kbytesfree.'; Label1.Caption:=S; end; 说明Drive 0=目前磁碟机,1=A磁碟机,2=B磁碟机....传回值若为-1,表示磁碟机侦测错误. ##DiskFree,DiskSizeExample ----------------------------------------------------------------------------- FileExists判断档案是否存在. ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionFileExists(constFileName:string):Boolean; 类似FileExists,RenameFile,FileCreate,FileWrite,FileClose,ExtractFileNameExample 范例 procedureTForm1.Button1Click(Sender:TObject); var BackupName:string; FileHandle:Integer; StringLen:Integer; X:Integer; Y:Integer; begin ifSaveDialog1.Executethen begin ifFileExists(SaveDialog1.FileName)then begin BackupName:=ExtractFileName(SaveDialog1.FileName); BackupName:=ChangeFileExt(BackupName,'.BAK'); ifnotRenameFile(SaveDialog1.FileName,BackupName)then raiseException.Create('Unabletocreatebackupfile.'); end; FileHandle:=FileCreate(SaveDialog1.FileName); {Writeoutthenumberofrowsandcolumnsinthegrid.} FileWrite(FileHandle, StringGrid1.ColCount,SizeOf(StringGrid1.ColCount)); FileWrite(FileHandle, StringGrid1.RowCount,SizeOf(StringGrid1.RowCount)); forX:=0toStringGrid1.ColCount?1do begin forY:=0toStringGrid1.RowCount?1do begin {Writeoutthelengthofeachstring,followedbythestringitself.} 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,DeleteFileExample ##FileExists,RenameFile,FileCreate,FileWrite,FileClose,ExtractFileNameExample ----------------------------------------------------------------------------- FileOpen开档. ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionFileOpen(constFileName:string;Mode: Integer):Integer; ****开档失败传回-1. 说明以下有关档案读取都属低阶,如DosInt21h中有关档案的部 分. fmOpenRead=$0000; fmOpenWrite=$0001; fmOpenReadWrite=$0002; fmShareCompat=$0000; fmShareExclusive=$0010; fmShareDenyWrite=$0020; fmShareDenyRead=$0030; fmShareDenyNone=$0040; fmOpenReadOpenforreadaccessonly. FmOpenWriteOpenforwriteaccessonly. FmOpenReadWriteOpenforreadandwriteaccess. fmShareCompatCompatiblewiththewayFCBsare opened. fmShareExclusiveReadandwriteaccessisdenied. fmShareDenyWriteWriteaccessisdenied. fmShareDenyReadReadaccessisdenied. fmShareDenyNoneAllowsfullaccessforothers. 范例 procedureOpenForShare(constFileName:String); var FileHandle:Integer; begin FileHandle:=FileOpen(FileName,fmOpenWriteorfmShareDenyNone); ifFileHandle>0then {validfilehandle} else {Openerror:FileHandle=negativeDOSerrorcode} end; 范例 procedureTForm1.Button1Click(Sender:TObject); var iFileHandle:Integer; iFileLength:Integer; iBytesRead:Integer; Buffer:PChar; i:Integer begin ifOpenDialog1.Executethen 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); fori:=0toiBytesRead-1do 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,FileReadExample ----------------------------------------------------------------------------- FileCreate建档 ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionFileCreate(constFileName:string):Integer; 范例 procedureTForm1.Button1Click(Sender:TObject); var BackupName:string; FileHandle:Integer; StringLen:Integer; X:Integer; Y:Integer; begin ifSaveDialog1.Executethen begin ifFileExists(SaveDialog1.FileName)then begin BackupName:=ExtractFileName(SaveDialog1.FileName); BackupName:=ChangeFileExt(BackupName,'.BAK'); ifnotRenameFile(SaveDialog1.FileName,BackupName)then raiseException.Create('Unabletocreatebackupfile.'); end; FileHandle:=FileCreate(SaveDialog1.FileName); {Writeoutthenumberofrowsandcolumnsinthegrid.} FileWrite(FileHandle, StringGrid1.ColCount,SizeOf(StringGrid1.ColCount)); FileWrite(FileHandle, StringGrid1.RowCount,SizeOf(StringGrid1.RowCount)); forX:=0toStringGrid1.ColCount?1do begin forY:=0toStringGrid1.RowCount?1do begin {Writeoutthelengthofeachstring,followedbythestringitself.} 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,ExtractFileNameExample ----------------------------------------------------------------------------- FileClose关档 ----------------------------------------------------------------------------- UnitSysUtils 函数原型procedureFileClose(Handle:Integer); 范例 procedureTForm1.Button1Click(Sender:TObject); var BackupName:string; FileHandle:Integer; StringLen:Integer; X:Integer; Y:Integer; begin ifSaveDialog1.Executethen begin ifFileExists(SaveDialog1.FileName)then begin BackupName:=ExtractFileName(SaveDialog1.FileName); BackupName:=ChangeFileExt(BackupName,'.BAK'); ifnotRenameFile(SaveDialog1.FileName,BackupName)then raiseException.Create('Unabletocreatebackupfile.'); end; FileHandle:=FileCreate(SaveDialog1.FileName); {Writeoutthenumberofrowsandcolumnsinthegrid.} FileWrite(FileHandle, StringGrid1.ColCount,SizeOf(StringGrid1.ColCount)); FileWrite(FileHandle, StringGrid1.RowCount,SizeOf(StringGrid1.RowCount)); forX:=0toStringGrid1.ColCount?1do begin forY:=0toStringGrid1.RowCount?1do begin {Writeoutthelengthofeachstring,followedbythestringitself.} 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,ExtractFileNameExample ============================================ ****它是以Handle为叁数. ============================================ FileRead读取档案 ----------------------------------------------------------------------------- UnitSysUtils 函数原型functionFileRead(Handle:Integer;varBuffer;Count:Integer):Integer; 范例 procedureTForm1.Button1Click(Sender:TObject); var iFileHandle:Integer; iFileLength:Integer; iBytesRead:Integer; Buffer:PChar; i:Integer begin ifOpenDialog1.Executethen 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);