编程语言

img wangphoenix

DELPHI常用函数集及简要范例

发表于2004/11/3 12:52:00  1899人阅读

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
================================
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   = $0000;
   fmOpenWrite   = $0001;
   fmOpenReadWrite  = $0002;
   fmShareCompat  = $0000;
   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 = $00000001;
   faHidden  = $00000002;
   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.$$$');
  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;
-----------------------------------------------------------------------------
Swap    将一组变数的高低位元交换.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Swap(X);
范例  var
     X: Word;
   begin
     X := Swap($1234);  { $3412 }
   end;
-----------------------------------------------------------------------------
UpCase   将一字元转为大写字母.
-----------------------------------------------------------------------------
Unit  System
函数原型 function UpCase(Ch: Char): Char;
范例  uses Dialogs;
   var
     s : string;
     i : Integer;
   begin
     { Get string from TEdit control }
     s := Edit1.Text;
     for i := 1 to Length(s) do
    s[i] := UpCase(s[i]);
     MessageDlg('Here it is in all uppercase: ' + s, mtInformation,
    [mbOk], 0);
   end;
Example
var

  s : string;
  i : Integer;
begin
  { Get string from TEdit control }
  s := Edit1.Text;
  for i := 1 to Length(s) do
    if i mod 2 = 0 then s[i] := UpCase(s[i]);
  Edit1.Text := s;
end;

===========================================
 Ordinal routines   序列常式
==========================================
Dec    使变数递减.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Dec(var X[ ; N: Longint]);
说明  Dec(X) ==> X:=X-1;
   Dec(X,N) ==> X:=X-N;
范例  var
     IntVar: Integer;
     LongintVar: Longint;
   begin
     Intvar := 10;
     LongintVar := 10;
     Dec(IntVar);  { IntVar := IntVar - 1 }
     Dec(LongintVar, 5); { LongintVar := LongintVar - 5 }
   end;
-----------------------------------------------------------------------------
Inc     使变数递增.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Inc(var X [ ; N: Longint ] );
说明  Inc(X) ==> X:=X-1;
   Inc(X,N) ==> X:=X-N;
范例  var
     IntVar: Integer;
     LongintVar: Longint;
   begin
     Inc(IntVar);   { IntVar := IntVar + 1 }
     Inc(LongintVar, 5); { LongintVar := LongintVar + 5 }
   end;
-----------------------------------------------------------------------------
Odd    检查是否为奇数.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Odd(X: Longint): Boolean;
Example
begin

   if Odd(5) then
     Canvas.TextOut(10, 10, '5 is odd.')
   else
     Canvas.TextOut(10, 10, 'Something is odd!');
 end;
=======================================
 Pointer and address routines 位址常式
=======================================
Addr    传回一个物件的位址.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Addr(X): Pointer;
Example
var
  I : Integer;
  NodeNumbers: array [0 .. 100] of Integer;
 begin
  with TreeView1 do
  begin
    for I := 0 to Items.Count - 1 do
    begin
      NodeNumbers[I] := CalculateValue(Items[I]);
      Items[I].Data := Addr(NodeNumber[I]);
    end;
  end;
end;
-----------------------------------------------------------------------------
Assigned   测试指标变数是否为nil.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Assigned(var P): Boolean;
说明  当@P=nil ==> 传回FALSE
范例  var P: Pointer;
   begin
     P := nil;
     if Assigned (P) then
    Writeln ('You won't see this');
     GetMem(P, 1024); {P valid}
     FreeMem(P, 1024); {P no longer valid and still not nil}
     if Assigned (P) then
    Writeln ('You'll see this');
   end
===================================
 String-formatting routines 字串格式化
==================================
FmtStr    格式化.
-----------------------------------------------------------------------------
FmtStr(var StrResult: string;const Format: string;const Args: array of string ); 

-----------------------------------------------------------------------------
Format
Format(const Format: string;const Args: array of string ): string; 
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 procedure FmtStr(var Result: string; const Format: string;
    const Args: array of const);
   function Format(const Format: string; const Args: array of
    const): string;
说明  %d : 整数
   %e : 科学式
   %f : 定点实数
   %g : 实数
   %n : 实数(-d,ddd,ddd.dd ...)
   %m: 金钱格式
   %p : point
   %s : 字串
   %x : Hex
范例  var
     i: Integer;
     j: Double;
     s: String;
     t: String;
   begin
     t:=Format('%d %8.2f %s',[i,j,s]);
     ListBox1.Item.Add(t);
   end;

BubbleSeries1.PercentFormat := '##0.0# %';
Example
procedure TForm1.Table1AfterDelete(DataSet: TDataSet);
begin
  StatusBar1.SimpleText := Format('There are now %d records in the table', [DataSet.RecordCount]);
end;

S:= Format( '1-? ??????? ??????? - %d, 2-? - %d, 3-? - %d', [10,20,30] );




Format( '%*.*f', [ 9, 2, 12345.6789 ] );
Format( '%9.2f', [ 12345.6789 ] );
Format( '%3d, %d, %0:d, %2:-4d, %d', [ 1, 2, 3, 4 ] );
'   1,2,1,3   ,4'


##  AfterDelete, Format Example


=======================================
 String-handling routines (Pascal-style) 字串函式
=======================================
AnsiCompareStr 比较两个字串的大小.依安装的 language driver.
-----------------------------------------------------------------------------
AnsiCompareText ( AnsiCompareText 此项不分大小写 ).
-----------------------------------------------------------------------------
Unit  SysUtils
var

S1,S2: string;
I: Integer;

begin

S1:= 'A????';
S2:= '?????';
I:= CompareStr(S1, S2);     { I = 0, ?.?. S1 = S2 }
if I=0 then
   MessageDlg(S1, '=', S2, mtWarning, [mbOK], 0);
end;

函数原型 function AnsiCompareStr(const S1, S2: string):Integer;
函数原型 function AnsiCompareText(const S1, S2: string):Integer;
-----------------------------------------------------------------------------
AnsiLowerCase 将字串全部转为小写字母.依安装的 language driver.
-----------------------------------------------------------------------------
AnsiUpperCase 将字串全部转为大写字母.依安装的 language drive
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function AnsiLowerCase(const S: string): string;
函数原型 function AnsiUpperCase(const S: string): string;
-----------------------------------------------------------------------------
CompareStr  比较两个字串的大小.
-----------------------------------------------------------------------------
CompareText  ( CompareText 此项不分大小写 ).
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function CompareStr(const S1, S2: string): Integer;
函数原型 function CompareText(const S1, S2: string): Integer;
范例  var
     String1, String2 : string;
     I : integer;
   begin
     String1 := 'STEVE';
     String2 := 'STEVe';
     I := CompareStr(String1, String2); { I < 0 }
     if I < 0 then
    MessageDlg('String1 < String2', mtWarning, [mbOK], 0);
   end;

   var
     String1, String2 : string;
     I : integer;
   begin
     String1 := 'ABC';
     String2 := 'aaa';
     I := CompareStr(String1, String2);  { I < 0 }
     if I < 0 then
    MessageDlg(' String1 < String2', mtWarning, [mbOK], 0);
   end;
Examlpe
var ColumnToSort: Integer;

The OnColumnClick event handler sets the global variable to indicate the column to sort and calls AlphaSort:

procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);

begin
  ColumnToSort := Column.Index;
  (Sender as TCustomListView).AlphaSort;
end;

The OnCompare event handler causes the list view to sort on the selected column:

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
var
  ix: Integer;
begin
  if ColumnToSort = 0 then
    Compare := CompareText(Item1.Caption,Item2.Caption)
  else begin
   ix := ColumnToSort - 1;
   Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
  end;
end;
##  OnColumnClick, AlphaSort, OnCompare, CompareText example
-----------------------------------------------------------------------------
Concat    将字串相加.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Concat(s1 [, s2,..., sn]: string): string;
说明  与 S := S1 + S2 + S3 ...; 相同.
范例  var
     S: string;
   begin
     S := Concat('ABC', 'DEF'); { 'ABCDE' }
   end;

var
   S: string;
begin
   S:= '? '+ '???? '+ '???????? ??????';
   S:= Concat('? ', '???? ', '???????? ??????');
      // ? ????? ??????? S := '? ???? ???????? ??????'
end;
-----------------------------------------------------------------------------
Copy    从母字串拷贝至另一个字串.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Copy(S: string; Index, Count: Integer): string;
说明  S  : 字串.
   Indexd : 从第几位开始拷贝.
   Count : 总共要拷贝几位.
范例  var S: string;
   begin
     S := 'ABCDEF';
     S := Copy(S, 2, 3); { 'BCD' }
   end;
----------------
var
   S: string;
begin
   S:= '??????';
   S:= Copy( S, 3, 4);     // S := '????'
end;
---------------
Example
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
var
  Found: boolean;
  i,SelSt: Integer;
  TmpStr: string;
begin
  { first, process the keystroke to obtain the current string }
  { This code requires all items in list to be uppercase}
  if Key in ['a'..'z'] then Dec(Key,32); {Force Uppercase only!}
  with (Sender as TComboBox) do
  begin
    SelSt := SelStart;
    if (Key = Chr(vk_Back)) and (SelLength <> 0) then
     TmpStr := Copy(Text,1,SelStart)+Copy(Text,SelLength+SelStart+1,255)

    else if Key = Chr(vk_Back) then {SelLength = 0}
     TmpStr := Copy(Text,1,SelStart-1)+Copy(Text,SelStart+1,255)
    else {Key in ['A'..'Z', etc]}
     TmpStr := Copy(Text,1,SelStart)+Key+Copy(Text,SelLength+SelStart+1,255);
    if TmpStr = ' then Exit;
    { update SelSt to the current insertion point }

    if (Key = Chr(vk_Back)) and (SelSt > 0) then Dec(SelSt)

    else if Key <> Chr(vk_Back) then Inc(SelSt);
    Key := #0; { indicate that key was handled }
    if SelSt = 0 then 
    begin
      Text:= ';
      Exit;
    end;

   {Now that TmpStr is the currently typed string, see if we can locate a match }

    Found := False;
    for i := 1 to Items.Count do
      if Copy(Items[i-1],1,Length(TmpStr)) = TmpStr then
      begin
        Text := Items[i-1]; { update to the match that was found }
        ItemIndex := i-1;
        Found := True;
        Break;
      end;
    if Found then { select the untyped end of the string }
    begin
      SelStart := SelSt;
      SelLength := Length(Text)-SelSt;

    end
    else Beep;
  end;
end;
-----------------------
procedure TComponentEditor.Copy;
var
  AFormat : Word;
  AData,APalette : THandle;
begin
  with Component as TImage do
  begin
    Picture.SaveToClipBoardFormat(AFormat,AData,APalette);
    ClipBoard.SetAsHandle(AFormat,AData);
  end;
end;


## Copy, Chr, SelStart, SelLength example

-----------------------------------------------------------------------------
Delete    删除字串中的数个字元.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Delete(var S: string; Index, Count:Integer);
说明  S  : 字串.
   Indexd : 从第几位开始删.
   Count : 总共要删几位.
范例  var
     s: string;
   begin
     s := 'Honest Abe Lincoln';
     Delete(s,8,4);
     Canvas.TextOut(10, 10, s); { 'Honest Lincoln' }
   end;
var
   S: string;
begin
   S:= '???????, ??????, ??????????!';
   Delete(S, 8, 1);     // S := '??????? ??????, ??????????!'
   MessageDlg(S, mtWarning, [mbOK],0); 
end;
-----------------------------------------------------------------------------
NewStr   在 heap 中配置一个新的字串空间给PString 指标.
-----------------------------------------------------------------------------
DisposeStr  在 heap 中释放一个字串空间 PString指标.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function NewStr(const S: string): PString;
函数原型 procedure DisposeStr(P: PString);
说明  S  : 字串.
   Pstring : 新的字串指标.
范例  var
     P: PString;
     S: string;
   begin
     S := 'Ask me about Blaise';
     P := NewStr(S);
     DisposeStr(P):
   end;
-----------------------------------------------------------------------------
Insert    将一个子字串插入另一个字串中.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Insert(Source: string; var S: string; Index: Integer);
说明  Source : 子字串.
   S  : 被插入的母字串.
   Indexd  : 从第几位开始插入.
范例  var
     S: string;
   begin
     S := 'Honest Lincoln';
     Insert('Abe ', S, 8); { 'Honest Abe Lincoln' }
   end;
var
   S: string;
begin
   S:= '??????? ?????? ??????????.';
   Insert( '!', S, 8);       { S := '???????! ?????? ??????????.'}
   MessageDlg( S, mtWarning, [mbOK],0); 
end;
-----------------------------------------------------------------------------
IntToHex   将 Int 转为 Hex.
-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);

var
  i: Integer;
begin
  Label1.Caption := ';
  for i := 1 to Length(Edit1.Text) do
  begin
    try
      Label1.Caption := Label1.Caption + IntToHex(Edit1.Text[i],4) + ' ';
    except
      Beep;
    end;
  end;
end;

Exam:

Edit2.text:=(strtoint(Edit1.text),6);
-----------------------------------------------------------------------------
IntToStr   将 Int 转为 Str.
-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    Label1.Caption := IntToStr(StrToInt(Edit1.Text) * StrToInt(Edit2.Text));
  except
    ShowMessage('You must specify integer values. Please try again.');
  end;
end;
-----------------------------------------------------------------------------
StrToInt   将 Str 转为 Int.
-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  J: Integer;
begin
  I := StrToInt(Edit1.Text);
  J := StrToInt(Edit2.Text);
  ShowMessage(IntToStr(I + J));
end;
-----------------------------------------------------------------------------
StrToIntDef  将 Str 转为 Int.当转换有误时,则传回 Default 的值.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function IntToHex(Value: Integer; Digits: Integer): string;
函数原型 function IntToStr(Value: Integer): string;
函数原型 function StrToInt(const S: string): Integer;
函数原型 function StrToIntDef(const S: string; Default: Integer): Integer;
说明  Value : 欲转换的整数.
   Digits : 欲转换为几位数的 Hex.
范例  procedure TForm1.Button1Click(Sender: TObject);
   begin
     Edit2.Text := IntToHex(StrToInt(Edit1.Text), 6);
   end;

   procedure TForm1.Button1Click(Sender: TObject);
   var
     Value: Integer;
   begin
     Value := 1234;
     Edit1.Text := IntToStr(Value);
   end;

   procedure TForm1.Button1Click(Sender: TObject);
   var
     S: string;
     I: Integer;
   begin
     S := '22467';
     I := StrToInt(S);
     Inc(I);
     Edit1.Text := IntToStr(I);
   end;

   procedure TForm1.Button1Click(Sender: TObject);
   var
     NumberString: string;
     Number: Integer;
   begin
     NumberString := Edit1.Text;
     Number := StrToIntDef(NumberString, 1000);
     Edit2.Text := IntToStr(Number);
   end;
Example
var

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

      ftBoolean:
        begin
          if ListItem = 'True' then
            Query1.Params[I].AsBoolean := True
          else
            Query1.Params[I].AsBoolean := False;
        end;
      ftFloat:
        Query1.Params[I].AsFloat := StrToFloat(ListItem);
      ftCurrency:
        Query1.Params[I].AsCurrency := StrToFloat(ListItem);
      ftBCD:
        Query1.Params[I].AsBCD := StrToCurr(ListItem);
      ftDate:

        Query1.Params[I].AsDate := StrToDate(ListItem);
      ftTime:
        Query1.Params[I].AsTime := StrToTime(ListItem);
      ftDateTime:
        Query1.Params[I].AsDateTime := StrToDateTime(ListItem);
    end;
  end;
end;
--------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  Number: Integer;
begin
  Number := StrToIntDef(Edit1.Text, 1000);
  Edit2.Text := IntToStr(Number);
end;
-------------------
## ParamCount, DataType, StrToIntDef, AsXXX Example
-----------------------------------------------------------------------------
Str     将数值转换为格式化的字串.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Str(X [: Width [: Decimals ]]; var S);
说明  X  : 欲转换的整数 or 实数.
   Width : 格式化长度.(Integer)
   Decimals : 小数点位数.(Integer)
范例  function MakeItAString(I: Longint): string;
    { Convert any integer type to a string }
   var
     S: string[11];
   begin
     Str(I, S);
     MakeItAString:= S;
   end;
   begin
     Canvas.TextOut(10, 10, MakeItAString(-5322));
   end;
-----------------------------------------------------------------------------
Val     将字串转为数字.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Val(S; var V; var Code: Integer);
说明  S  : 欲转换的字串.
   V  : 转换後的整数 or 实数.
   Code : Code = 0 表示转换成功.
范例  uses Dialogs;
   var 
     I, Code: Integer;
   begin
    { Get text from TEdit control }
     Val(Edit1.Text, I, Code);
    { Error during conversion to integer? }
     if code <> 0 then
    MessageDlg('Error at position: ' + IntToStr(Code), 
     mtWarning, [mbOk], 0);
     else
    Canvas.TextOut(10, 10, 'Value = ' + IntToStr(I));
     Readln;
   end;
-----------------------------------------------------------------------------
Length    字串长度.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Length(S: string): Integer;
说明  S  : 欲转换的字串.
范例  var 
     S: string;
   begin
     S := 'The Black Knight';
     Canvas.TextOut(10, 10, 'String Length = ' + 
    IntToStr(Length(S)));
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);

var
  i: Integer;
begin
  Label1.Caption := ';
  for i := 1 to Length(Edit1.Text) do
  begin
    try
      Label1.Caption := Label1.Caption + IntToHex(Edit1.Text[i],4) + ' ';
    except
      Beep;
    end;
  end;
end;

范例
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
  S := memo1.text;
  Label1.caption :=' ' + IntToStr(Length(S));
end;

var
S: string;
I: Integer;
begin
S:= '? ???? ???????? ??????';
I:= Length(S);     // I:= 22
MessageDlg( '????? ??????='+ IntToStr(I), mtWarning, [mbOK], 0);
end;
## Length, IntToHex Example
-----------------------------------------------------------------------------
Pos   寻找子字串在母字串中的位置.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Pos(Substr: string; S: string): Integer;
说明  Substr : 子字串.
   S  : 母字串.
范例 
procedure TForm1.Button1Click(Sender: TObject);
var S: string;
begin
  S := '  1234.5 ';
  { Convert spaces to zeroes }
  while Pos(' ', S) > 0 do
    S[Pos(' ', S)] := '0';
    Label1.Caption := S;
    Label1.Font.Size := 16;
end;

var
   S: string;
   I: Integer;
begin
   S:= '? ???? ???????? ??????';
   I:= Pos( '???', S);     // I:= 3
end;
//DEMO  001234.50 //空白字串补零
-----------------------------------------------------------------------------
LowerCase  将字串全部转为小写字母.
-----------------------------------------------------------------------------
Unit  System
函数原型 function LowerCase(const S: string): string;
范例  procedure TForm1.Button1Click(Sender: TObject);
   begin
     Edit2.Text := LowerCase(Edit1.Text);
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := LowerCase(Edit1.Text);
end;
var
   S: string;
begin
   S:= LowerCase( '????????.TXT') ;    // S := '????????.txt'
end;
-----------------------------------------------------------------------------
UpperCase  将字串全部转为大写字母.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function UpperCase(const S: string): string;
范例  procedure TForm1.Button1Click(Sender: TObject);
   var
     I: Integer;
   begin
     for I := 0 to ListBox1.Items.Count -1 do
    ListBox1.Items[I] := UpperCase(ListBox1.Items[I]);
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to ListBox1.Items.Count -1 do
    ListBox1.Items[I] := UpperCase(ListBox1.Items[I]);
end;
-----------------------------------------------------------------------------
Trim     将字串前後的空白及控制字元清掉.
Trim ( const S: string ): string; 
SysUtils
var 
S: string;
L: Integer;
begin
S:= #13' ???! '#13;
L:= length( S);       // L := 10
S:= Trim( S);       // S := '???!'
L:= L-length( S);       // L := 5
MessageDlg( '??????? ???????? - '+ IntToStr(L), mtInformation, [mbOk], 0);
end;

-----------------------------------------------------------------------------
TrimLeft   将字串左边的空白及控制字元清掉.
SysUtils
var
S: string;
L: Integer;
begin
S:= #13' ???! '#13;
L:= length( S);       // L := 10
S:= TrimLeft( S);       // S := '???! '#13
L:= L-length( S);       // L := 3
MessageDlg( '??????? ???????? - '+IntToStr(L), mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
TrimRight   将字串右边的空白及控制字元清掉.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function Trim(const S: string): string;
函数原型 function TrimLeft(const S: string): string;
函数原型 function TrimRight(const S: string): string;

var
S: string;
L: Integer;
begin
S:= #13' ???! '#13;
L:= length( S);       // L := 10 
S:= TrimRight( S);      // S := #13' ???!'
L:= L-length( S);       // L := 2 
MessageDlg( '??????? ???????? - '+IntToStr(L), mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
AdjustLineBreaks  将字串的换行符号全部改为#13#10
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function AdjustLineBreaks(const S: string): string;

=======================================
 String-handling routines (null-terminated)字串函式
=======================================
StrAlloc   配置字串空间.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrAlloc(Size: Cardinal): PChar;
说明  Size=字串最大空间+1
-----------------------------------------------------------------------------
StrBufSize   传回由 StrAlloc 配置空间的大小
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrBufSize(Str: PChar): Cardinal;
-----------------------------------------------------------------------------
StrCat    字串相加.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrCat(Dest, Source: PChar): PChar;
范例  uses SysUtils;
   const
     Obj: PChar = 'Object';
     Pascal: PChar = 'Pascal';
   var
     S: array[0..15] of Char;
   begin
     StrCopy(S, Obj);
     StrCat(S, ' ');
     StrCat(S, Pascal);
     Canvas.TextOut(10, 10, StrPas(S));
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);
var
  Buffer: PChar;
begin
  GetMem(Buffer,Length(Label1.Caption) + Length(Edit1.Text) + 1);
  StrCopy(Buffer, PChar(Label1.Caption));
  StrCat(Buffer, PChar(Edit1.Text));
  Label1.Caption := Buffer;
  Edit1.Clear;
  FreeMem(Buffer);
end;

const
   P0: PChar = '??????-';
   P1: PChar = '??????????';
   P2: PChar = '????????';
var
   S1, S2: array[0..20] of Char;
begin
   StrCopy(S1, P0);
   StrCopy(S2, P0);
   StrCat(S1, P1);     { S1 := '??????-??????????' }
   StrCat(S2, P2);     { S2 := '??????-????????' }
   MessageDlg( S1+ #13+ S2, mtInformation, [mbOk], 0);
end;

##StrCopy, StrCat Example
-----------------------------------------------------------------------------
StrComp   比较两字串大小.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrComp(Str1, Str2 : PChar): Integer;
范例  uses SysUtils;
   const
     S1: PChar = 'Wacky';
     S2: PChar = 'Code';
   var
     C: Integer;
     Result: string;
   begin
     C := StrComp(S1, S2);
     if C < 0 then Result := ' is less than ' else
    if C > 0 then Result := ' is greater than ' else
     Result := ' is equal to ';
     Canvas.TextOut(10, 10, StrPas(S1) + Result +
    StrPas(S2));
   end;
Example
uses SysUtils;
procedure TForm1.Button1Click(Sender: TObject);

var
  Msg: string;
  CompResult: Integer;
begin
  Msg := Edit1.Text;
  CompResult := StrComp(PChar(Edit1.Text), PChar(Edit2.Text));
  if CompResult < 0 then
    Msg := Msg + ' is less than '
  else if CompResult > 0 then
    Msg := Msg + ' is greater than '
  else
    Msg := Msg + ' is equal to '
  Msg := Msg + Edit2.Text;
  ShowMessage(Msg);
end;

var
   S1,S2: PChar;
   I: Integer;
   Res: string;
begin
   S1:= 'Company';
   S2:= 'COMPANY';
   I:= StrComp(S1, S2);
   if I>0 then Res:= '>' else
      if I<0 then Res:= '<' else Res:= '=';
   MessageDlg(S1+ Res+ S2, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrCopy   拷贝字串.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrCopy(Dest, Source: PChar): PChar;
范例  uses SysUtils;
   var
     S: array[0..12] of Char;
   begin
     StrCopy(S, 'ObjectPascal');
     Canvas.TextOut(10, 10, StrPas(S));
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);
var
  Buffer: PChar;
begin
  GetMem(Buffer,Length(Label1.Caption) + Length(Edit1.Text) + 1);
  StrCopy(Buffer, PChar(Label1.Caption));
  StrCat(Buffer, PChar(Edit1.Text));
  Label1.Caption := Buffer;
  Edit1.Clear;
  FreeMem(Buffer);
end;
##  StrCopy, StrCat Example
-----------------------------------------------------------------------------
StrDispose  释放StrAlloc or StrNew所配置的空间.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 procedure StrDispose(Str: PChar);
范例  uses SysUtils;
   const
     S: PChar = 'Nevermore';
   var
     P: PChar;
   begin
     P := StrNew(S);
     Canvas.TextOut(10, 10, StrPas(P));
     StrDispose(P);
   end;
-----------------------------------------------------------------------------
StrECopy   拷贝字串并传回字串结束位址.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrECopy(Dest, Source: PChar): PChar;
范例  uses SysUtils;
   const
     Turbo: PChar = 'Object';
     Pascal: PChar = 'Pascal';
   var
     S: array[0..15] of Char;
   begin
     StrECopy(StrECopy(StrECopy(S, Turbo), ' '), Pascal);
     Canvas.TextOut(10, 10, StrPas(S));
   end;
Example
uses SysUtils;
const

  Turbo: PChar = 'Object';
  Pascal: PChar = 'Pascal';
 var
  S: array[0..15] of Char;
begin
  StrECopy(StrECopy(StrECopy(S, Turbo), ' '), Pascal);
  Canvas.TextOut(10, 10, string(S));
end;
-----------------------------------------------------------------------------
StrEnd    传回字串结束位址.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrEnd(Str: PChar): PChar;
范例  uses SysUtils;
   const
     S: PChar = 'Yankee Doodle';
   begin
     Canvas.TextOut(5, 10, 'The string length of "' + StrPas(S)
    + '" is ' +IntToStr(StrEnd(S) - S));
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);

var
  TextBuffer: PChar;
  Ptr: PChar;
begin
  GetMem(TextBuffer, Length(Edit1.Text)+1);
  StrCopy(TextBuffer, PChar(Edit1.Text));
  Ptr := StrEnd(TextBuffer);
  Label1.Caption := ';
  while Ptr >= TextBuffer do
  begin
    Ptr := Ptr ? 1;
    Label1.Caption := Label1.Caption + Ptr^;
  end;
  FreeMem(TextBuffer);
end;

var
   Str: PChar;
   L: Word;
begin
   ...
   L:= StrEnd(Str) - Str;
   ...
end;
-----------------------------------------------------------------------------
StrIComp   比较两字串大小.(不分大小写)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrIComp(Str1, Str2:PChar): Integer;
范例  uses SysUtils;
   const
     S1: PChar = 'Wacky';
     S2: PChar = 'Code';
   var
     C: Integer;
     Result: string;
   begin
     C := StrIComp(S1, S2);
     if C < 0 then Result := ' is less than ' else
    if C > 0 then Result := ' is greater than ' else
     Result := ' is equal to ';
     Canvas.TextOut(10, 10, StrPas(S1) + Result +
    StrPas(S2));
   end;
xample
uses SysUtils;
procedure TForm1.Button1Click(Sender: TObject);

var
  Msg: string;
  CompResult: Integer;
begin
  Msg := Edit1.Text;
  CompResult := StrIComp(PChar(Edit1.Text), PChar(Edit2.Text));
  if CompResult < 0 then
    Msg := Msg + ' is less than '
  else if CompResult > 0 then
    Msg := Msg + ' is greater than '
  else
    Msg := Msg + ' is equal to '
  Msg := Msg + Edit2.Text;
  ShowMessage(Msg);
end;

var
   S1,S2: PChar;
   I: Integer;
   Res: string;
begin
   S1:= 'ABC';
   S2:= 'abc';
   I:= StrIComp(S1, S2);     { I := 0, ?.?. S1 = S2 }
   if I>0 then Res:= '>' else
      if I<0 then Res:= '<' else Res:= '=';
   MessageDlg( S1 + Res + S2, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrLCat   字串相加.(指定长)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrLCat(Dest, Source: PChar; MaxLen: Cardinal):
    PChar;
范例  uses SysUtils;
   var
     S: array[0..13] of Char;
   begin
     StrLCopy(S, 'Object', SizeOf(S) - 1);
     StrLCat(S, ' ', SizeOf(S) - 1);
     StrLCat(S, 'Pascal', SizeOf(S) - 1);
     Canvas.TextOut(10, 10, StrPas(S));
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);
var
  FirstHalf: PChar;
  SecondHalf: PChar;
  HalfLen: Integer;
begin
  HalfLen := StrLen(PChar(Edit1.Text)) div 2;
  GetMem(FirstHalf,HalfLen+2);
  GetMem(SecondHalf,HalfLen+2);
  FirstHalf^ := Chr(0);
  SecondHalf^ := Chr(0);
  StrLCat(FirstHalf, PChar(Edit1.Text), HalfLen);
  StrCat(SecondHalf, PChar(Edit1.Text) + HalfLen);
  Application.MessageBox(FirstHalf, 'First Half', MB_OK);
  Application.MessageBox(SecondHalf, 'Second Half', MB_OK);
  FreeMem(FirstHalf);
  FreeMem(SecondHalf);
end;

const
   S1: PChar = '???';
   S2: PChar = '?????????';
var
   S: array[0..13] of Char;
begin
   StrLCopy(S, S1, StrLen(S1));
   StrLCat(S, S2, 6);     { S :='??????' }
   MessageDlg(S, mtInformation, [mbOk], 0);
end;
##  StrLen, StrLCat Example
-----------------------------------------------------------------------------
StrLComp   比较两字串大小.(指定长)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrLComp(Str1, Str2: PChar; MaxLen: Cardinal):
    Integer;
范例  uses SysUtils;
   const
     S1: PChar = 'Enterprise'
     S2: PChar = 'Enter'
   var
     Result: string;
   begin
     if StrLComp(S1, S2, 5) = 0 then
    Result := 'equal'
     else
    Result := 'different';
     Canvas.TextOut(10, 10, 'The first five characters are ' +
    Result);
   end;
example
uses SysUtils;
const
  S1: PChar = 'Enterprise'
  S2: PChar = 'Enter'
var
  ComStr: string;
begin
  if StrLComp(S1, S2, 5) = 0 then
    ComStr := 'equal'
  else
    ComStr := 'different';
  Canvas.TextOut(10, 10, 'The first five characters are ' + ComStr);
end;
const
   S1: PChar = '?????????';
   S2: PChar = '????????';
var
   I: Integer;
   S: string;
begin
   I:= 5;
   if StrLComp( S1, S2, I) = 0 then S:= '?????' else S:= '????????';
   MessageDlg( '?????? '+ IntToStr(I)+ ' ???????? ????? '+ S, mtInformation,[mbOk], 0);
end;

-----------------------------------------------------------------------------
StrLCopy   拷贝字串.(指定长)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrLCopy(Dest, Source: PChar; MaxLen: 
    Cardinal): PChar;
范例  uses SysUtils;
   var
     S: array[0..11] of Char;
   begin
     StrLCopy(S, 'ObjectPascal', SizeOf(S) - 1);
     Canvas.TextOut(10, 10, StrPas(S));
   end;
Example
uses SysUtils;

const MAX_BUFFER = 10;
procedure TForm1.Button1Click(Sender TObject);
var
  Buffer: array [0..MAX_BUFFER] of char;
begin
  StrLCopy(Buffer, PChar(Edit1.Text), MAX_BUFFER);
  Application.MessageBox(Buffer, 'StrLCopy Example', MB_OK);
end;

var
   S: PChar;
begin
   StrLCopy( S, '?????????', 5);       { S := '?????' }
   ...
end;
-----------------------------------------------------------------------------
StrLen    传回字串长度.(不含终止位元)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrLen(Str: PChar): Cardinal;
范例  uses SysUtils;
   const
     S: PChar = 'E Pluribus Unum';
   begin
     Canvas.TextOut(5, 10, 'The string length of "' + StrPas(S)
    + '" is ' + IntToStr(StrLen(S)));
   end;
Example
procedure TForm1.Button1Click(Sender: TObject);
var
  FirstHalf: PChar;
  SecondHalf: PChar;
  HalfLen: Integer;
begin
  HalfLen := StrLen(PChar(Edit1.Text)) div 2;
  GetMem(FirstHalf,HalfLen+2);
  GetMem(SecondHalf,HalfLen+2);
  FirstHalf^ := Chr(0);
  SecondHalf^ := Chr(0);
  StrLCat(FirstHalf, PChar(Edit1.Text), HalfLen);
  StrCat(SecondHalf, PChar(Edit1.Text) + HalfLen);
  Application.MessageBox(FirstHalf, 'First Half', MB_OK);
  Application.MessageBox(SecondHalf, 'Second Half', MB_OK);
  FreeMem(FirstHalf);
  FreeMem(SecondHalf);
end;

const
   S: PChar = '????? ????? ????? ????????!';
begin
   MessageDlg( S+ #13#10 + '?????????? ???????? = ' + IntToStr( StrLen( S)), mtInformation, [mbOk], 0);
end;
##  StrLen, StrLCat Example
-----------------------------------------------------------------------------
StrLIComp   比较两字串大小.(指定长,不分大小写)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrLIComp(Str1, Str2: PChar; MaxLen:
    Cardinals): Integer;
范例  uses SysUtils;
   const
     S1: PChar = 'Enterprise'
     S2: PChar = 'Enter'
   var
     Result: string;
   begin
     if StrLIComp(S1, S2, 5) = 0 then
    Result := 'equal'
     else
    Result := 'different';
     Canvas.TextOut(10, 10, 'The first five characters are ' +
    Result);
   end;
Examply
uses SysUtils;
const

  S1: PChar = 'Enterprise'
  S2: PChar = 'Enter'

var
  ComStr: string;
begin
  if StrLIComp(S1, S2, 5) = 0 then
    ComStr := 'equal'
  else
    ComStr := 'different';
  Canvas.TextOut(10, 10, 'The first five characters are ' + ComStr);
end;


const
   S1: PChar = '?????????';
   S2: PChar = '????????';
var
   S: string;
begin
   if StrLIComp( S1, S2, 5) = 0 then S:= '?????' else S:= '????????';
   MessageDlg( S1 + #13 + S2 + #13 + '?????? ' + IntToStr( I) + ' ???????? ????? ' + S, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrLower   将字串全部转为小写字母.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrLower(Str: PChar): PChar;
范例  uses SysUtils;
   const
     S: PChar = 'A fUnNy StRiNg'
   begin
     Canvas.TextOut(5, 10, StrPas(StrLower(S)) + ' ' +
    StrPas(StrUpper(S)));
   end;
-----------------------------------------------------------------------------
StrMove   从来源字串拷贝n个Bytes到目爬r串.(不含终止位元)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrMove(Dest, Source: PChar; Count:
    Cardinal): PChar;
范例  uses SysUtils;
   function AHeapaString(S: PChar): PChar;
     { Allocate string on heap }
   var
     L: Cardinal;
     P: PChar;
   begin
     StrNew := nil;
     if (S <> nil) and (S[0] <> #0) then 
    begin
      L := StrLen(S) + 1;
      GetMem(P, L);
      StrNew := StrMove(P, S, L);
    end;
   end;
   procedure DisposeDaString(S: PChar);
     { Dispose string on heap }
   begin
     if S <> nil then FreeMem(S, StrLen(S) + 1);
   end;
   var 
     S: PChar;
   begin
     AHeapaString(S);
     DisposeDaString(S);
   end;
var
   S1, S2: PChar;
begin
   S1:= 'ABcdEFgh';
   StrMove( S2, S1, StrLen( S1) + 1 );
   StrLower( S1);     { S1:= 'abcdefgh' }
   StrUpper( S2);     { S2:= 'ABCDEFGH' }
   MessageDlg( S1 + #13#10 + S2, mtInformation, [mbOk], 0);
end;

-----------------------------------------------------------------------------
StrNew   配置字串空间.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrNew(Str: PChar): PChar;
Example
uses Sysutils;
procedure TForm1.Button1Click(Sender: TObject);

var
  Temp: PChar;
begin
  // Allocate memory.
  Temp := StrNew(PChar(Edit1.Text));
  Application.MessageBox(Temp, 'StrNew, StrDispose Example', MB_OK);
  // Deallocate memory.
  StrDispose(Temp);
end;

const
   S: PChar = '??????????? ??????';
var
   SNew: PChar;
begin
   SNew:= StrNew( S);
   MessageDlg( 'S: ' + S + #13 + 'SNew: ' + SNew, mtInformation, [mbOk], 0);
   StrDispose(SNew);
end;

##   StrNew, StrDispose Example
-----------------------------------------------------------------------------
StrPas    将 null-terminated 字串转为Pascal-style 字串.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrPas(Str: PChar): string;
范例  uses SysUtils;
   const
     A: PChar = 'I love the smell of Object Pascal in the
     morning.';
   var
     S: string[79];
   begin
     S := StrPas(A);
     Canvas.TextOut(10, 10, S);
     { note that the following also works }
     Canvas.TextOut(10, 10, A);
   end;
-----------------------------------------------------------------------------
StrPCopy   拷贝 Pascal-style 字串到null-terminated 字串.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrPCopy(Dest: PChar; Source: string): PChar;
范例  uses SysUtils;
   var
     A: array[0..79] of Char;
     S: String;
   begin
     S := 'Honk if you know Blaise.';
     StrPCopy(A, S);
     Canvas.TextOut(10, 10, StrPas(A));
   end;

var
   Source: string;
   Dest: array[0..20] of Char;
begin
   Source:= '???????? ??????';
   StrPCopy( Dest, Source);
   MessageDlg( Dest, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrPLCopy  拷贝 Pascal-style 字串到null-terminated 字串.(指定长)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrPLCopy(Dest: PChar; const Source: string;
    MaxLen: Cardinal): PChar;
-----------------------------------------------------------------------------
StrPos    子字串在母字串中的位置.(第一个位置)
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrPos(Str1, Str2: PChar): PChar;
说明  Str1 母字串
   Str2 子字串
Example
uses SysUtils;

procedure TForm1.Button1Click(Sender TObject);
var
  Location: PChar;
begin
  if StrPos(PChar(Edit1.Text), PChar(Edit2.Text)) <> nil 
then
    ShowMessage('Substring found')
  else
    ShowMessage('Substring not found');
end;
------------------
const
   SubStr: PChar = 'www';
var
   S, R: PChar;
begin
   S:= 'http://www.atrussk.ru/delphi/';
   R:= StrPos(S, SubStr);
   if R<>nil then MessageDlg( R, mtInformation, [mbOk], 0) else
       MessageDlg( '?? ????????? ?????? URL!', mtError, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrRScan   子字元在母字串中的位置的下一个位址.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrRScan(Str: PChar; Chr: Char): PChar;
范例  { Return pointer to name part of a full path name }
   uses SysUtils;
   function NamePart(FileName: PChar): PChar;
   var
     P: PChar;
   begin
     P := StrRScan(FileName, '/');
     if P = nil then
    begin
      P := StrRScan(FileName, ':');
      if P = nil then P := FileName;
    end;
     NamePart := P;
   end;
   var
     S : string;
   begin
     S := StrPas(NamePart('C:/Test.fil'));
     Canvas.TextOut(10, 10, S);
   end;
const
   S: PChar = 'MyFile.zzz';
var
   R: PChar;
begin
   R:= StrRScan( S, '.');     { R := '.zzz' }
   MessageDlg( R, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrScan   子字元在母字串中的位置.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrScan(Str: PChar; Chr: Char): PChar;
范例  uses SysUtils;
   function HasWildcards(FileName: PChar): Boolean;
   { Return true if file name has wildcards in it }
   begin
     HasWildcards := (StrScan(FileName, '*') <> nil) or
    (StrScan(FileName, '?') <> nil);
   end;
   const
     P: PChar = 'C:/Test.* '; 
   begin
     if HasWildcards(P) then
    Canvas.TextOut(20, 20, 'The string has wildcards')
     else
    Canvas.TextOut(20, 20, 'The string doesn't have 
     wildcards')
   end;
const
   S: PChar = 'http://www.atrussk.ru';
var
   R: PChar;
begin
   R:= StrScan( S, 'w');     { R := 'www.atrussk.ru' }
   MessageDlg( R, mtInformation, [mbOk], 0);
end;
-----------------------------------------------------------------------------
StrUpper   将字串全部转为大写字母.
-----------------------------------------------------------------------------
Unit  SysUtils
函数原型 function StrUpper(Str: PChar): PChar;
范例  uses SysUtils;
   const
     S: PChar = 'A fUnNy StRiNg'
   begin
     Canvas.TextOut(5, 10, StrPas(StrLower(S)) + ' ' +
    StrPas(StrUpper(S)));
   end;
=========================================
 Text-file routines   Text-file常式
=========================================
Append   开起一个可供Append的档案.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Append(var f: Text);
范例  var F: TextFile;
   begin
     if OpenDialog1.Execute then
    { Bring up open file dialog }
    begin
      AssignFile(F, OpenDialog1.FileName);
      { Open file selected in dialog }
      Append(F);  { Add more text onto end }
      Writeln(F, 'appended text');
      CloseFile(F); { Close file, save changes }
    end;
   end;
Example
var

  f: TextFile;
begin
  if OpenDialog1.Execute then
  begin                    { open a text file }
    AssignFile(f, OpenDialog1.FileName);
    Append(f);
    Writeln(f, 'I am appending some stuff to the end of the file.'); 
    { insert code here that would require a Flush before closing the file }
    Flush(f);  { ensures that the text was actually written to file }
    CloseFile(f);
  end;
end;
##  Append, Flush Example
-----------------------------------------------------------------------------
Eoln    测试档案是否结束.(For text file.)
-----------------------------------------------------------------------------
Unit  System
函数原型 function Eoln [(var F: Text) ]: Boolean;
Flush    将Buffer中的资料存入磁碟.
     (For text file)
Unit  System
函数原型 procedure Flush(var F: Text);
范例  var
     f: TextFile;
   begin
     if OpenDialog1.Execute then
    begin  { open a text file }
      AssignFile(f, OpenDialog1.FileName);
      Append(f);
      Writeln(f, 'I am appending some stuff to the end of the 
     file.');
      Flush(f);
      { ensures that the text was actually written to file }
      { insert code here that would require a Flush before 
     closing the file }
      CloseFile(f);
    end;
   end;
Example
begin
 { Tells program to wait for keyboard input }
   WriteLn(Eoln);
 end;
-----------------------------------------------------------------------------
Read    读档.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Read(F , V1 [, V2,...,Vn ] );
   procedure Read( [ var F: Text; ] V1 [, V2,...,Vn ] );
范例  uses Dialogs;
   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.
-----------------------------------------------------------------------------
Readln    读档.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);
范例  var
     s : string;
   begin
     Write('Enter a line of text: ');
     Readln(s);
     Writeln('You typed: ',s);
     Writeln('Hit <Enter> to exit');
     Readln;
   end;
-----------------------------------------------------------------------------
SeekEof   测试档案是否结束.
-----------------------------------------------------------------------------
Unit  System
函数原型 function SeekEof [ (var F: Text) ]: Boolean;
范例  var
     f : System.TextFile;
     i, j, Y : Integer;
   begin
     AssignFile(f,'TEST.TXT');
     Rewrite(f);
     { Create a file with 8 numbers and some whitespace at the 
    ends of the lines }
     Writeln(f,'1 2 3 4 ');
     Writeln(f,'5 6 7 8 ');
     Reset(f);
     { Read the numbers back. SeekEoln returns TRUE if there are 
    no more numbers on the current line; SeekEof returns 
    TRUE if there is no more text (other than whitespace) in 
    the file. }
     Y := 5;
     while not SeekEof(f) do
    begin
      if SeekEoln(f) then
     Readln; { Go to next line }
      Read(f,j);
      Canvas.TextOut(5, Y, IntToStr(j));
      Y := Y + Canvas.TextHeight(IntToStr(j)) + 5;
    end;
   end;
-----------------------------------------------------------------------------
SeekEoln   测试档案中行是否结束.
-----------------------------------------------------------------------------
Unit  System
函数原型 function SeekEoln [ (var F: Text) ]: Boolean;
Example
var

   f : System.TextFile;
   i, j, Y : Integer;
 begin
   AssignFile(f,'TEST.TXT');
   Rewrite(f);
   { Create a file with 8 numbers and some
     whitespace at the ends of the lines }
   Writeln(f,'1 2 3 4 ');
   Writeln(f,'5 6 7 8 ');
   Reset(f);
   { Read the numbers back. SeekEoln returns TRUE if there are no more
     numbers on the current line; SeekEof returns TRUE if there is no 
     more text (other than whitespace) in the file. }

   Y := 5;
   while not SeekEof(f) do
   begin
     if SeekEoln(f) then
       Readln; { Go to next line }
     Read(f,j);
     Canvas.TextOut(5, Y, IntToStr(j));
     Y := Y + Canvas.TextHeight(IntToStr(j)) + 5;
   end;
 end;
##  SeekEoln, SeekEof Example
-----------------------------------------------------------------------------
SetTextBuf  指定 I/O buffer 给 text file.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure SetTextBuf(var F: Text; var Buf [ ; Size: Integer] );
范例  uses Dialogs;
   var
     F, FTwo: System.TextFile;
     Ch: Char;
     Buf: array[1..4095] of Char; { 4K buffer }
   begin
     if OpenDialog1.Execute then
    begin
      AssignFile(F, ParamStr(1));
      { Bigger buffer for faster reads }
      SetTextBuf(F, Buf);
      Reset(F);
      { Dump text file into another file }
      AssignFile(FTwo, 'WOOF.DOG'); 
      Rewrite(FTwo);
      while not Eof(f) do
     begin
       Read(F, Ch);
       Write(FTwoCh);
     end;
      System.CloseFile(F);
      System.CloseFile(FTwo);
    end;
   end;
-----------------------------------------------------------------------------
Write    写入档案.
-----------------------------------------------------------------------------
Unit  System



函数原型 Write(F, V1,...,Vn);
   Write( [var F: Text; ] P1 [ , P2,..., Pn] );
procedure TForm1.Button3Click(Sender: TObject);

var
  Stream: TBlobStream;
  S: string;
begin
  with Table1 do
  begin

    Edit;

    Stream := CreateBlobStream(FieldByName('Notes'), bmReadWrite);
    try
      Stream.Seek(0, 2); {Seek 0 bytes from the stream's end point}
      S := ' This line will be added to the end.';
      Stream.Write(PChar(S), Length(S));
    finally
      Stream.Free;
    end;
    Post;
  end;
end;
-----------------------------------------------------------------------------
Writeln    写入档案.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure Writeln([ var F: Text; ] P1 [, P2, ...,Pn ] );
范例  var
     s : string;
   begin
     Write('Enter a line of text: ');
     Readln(s);
     Writeln('You typed: ',s);
     Writeln('Hit <Enter> to exit');
     Readln;
   end;
=======================================
 Transfer routines   转换函式
=======================================
Chr    将 Byte 转为字元.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Chr(X: Byte): Char;
范例  begin
     Canvas.TextOut(10, 10, Chr(65)); { The letter 'A'}
   end;
Example
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

var
  Found: boolean;
  i,SelSt: Integer;
  TmpStr: string;
begin
  { first, process the keystroke to obtain the current string }
  { This code requires all items in list to be uppercase}
  if Key in ['a'..'z'] then Dec(Key,32); {Force Uppercase only!}
  with (Sender as TComboBox) do
  begin
    SelSt := SelStart;
    if (Key = Chr(vk_Back)) and (SelLength <> 0) then
     TmpStr := Copy(Text,1,SelStart)+Copy(Text,SelLength+SelStart+1,255)

    else if Key = Chr(vk_Back) then {SelLength = 0}
     TmpStr := Copy(Text,1,SelStart-1)+Copy(Text,SelStart+1,255)
    else {Key in ['A'..'Z', etc]}
     TmpStr := Copy(Text,1,SelStart)+Key+Copy(Text,SelLength+SelStart+1,255);
    if TmpStr = ' then Exit;
    { update SelSt to the current insertion point }

    if (Key = Chr(vk_Back)) and (SelSt > 0) then Dec(SelSt)

    else if Key <> Chr(vk_Back) then Inc(SelSt);
    Key := #0; { indicate that key was handled }
    if SelSt = 0 then 
    begin
      Text:= ';
      Exit;
    end;

   {Now that TmpStr is the currently typed string, see if we can locate a match }

    Found := False;
    for i := 1 to Items.Count do
      if Copy(Items[i-1],1,Length(TmpStr)) = TmpStr then
      begin
        Text := Items[i-1]; { update to the match that was found }
        ItemIndex := i-1;
        Found := True;
        Break;
      end;
    if Found then { select the untyped end of the string }
    begin
      SelStart := SelSt;
      SelLength := Length(Text)-SelSt;

    end
    else Beep;
  end;
end;
##  Copy, Chr, SelStart, SelLength example
-----------------------------------------------------------------------------
High    传回注脚的最大值.
-----------------------------------------------------------------------------
Unit  System
函数原型 function High(X);
范例  [Ordinal type]
   procedure TForm1.Button1Click(Sender: TObject);
   var
     Low_S:String;
     High_S:string;
     S:String;
   begin
     High_S:='  High='+IntToStr(High(Word));
     Low_S:='Low='+IntToStr(Low(Word));
     S:=Low_S+High_S;
     Label1.Caption:=S;
   end;

   S:=Low=0  High=65535

   [Array type]
   procedure TForm1.Button1Click(Sender: TObject);
   var
     P : Array[5..21] of Double;
     Low_S:String;
     High_S:string;
     S:String;
   begin
     High_S:='  High='+IntToStr(High(P));
     Low_S:='Low='+IntToStr(Low(P));
     S:=Low_S+High_S;
     Label1.Caption:=S;
   end;

   S:=Low=5  High=21

   [String type]
   procedure TForm1.Button1Click(Sender: TObject);
   var
     P : String[23];
     Low_S:String;
     High_S:string;
     S:String;
   begin
     High_S:='  High='+IntToStr(High(P));
     Low_S:='Low='+IntToStr(Low(P));
     S:=Low_S+High_S;
     Label1.Caption:=S;
   end;

   S:=Low=0  Hight=23

   P:ShortString;
   S:=Low=0  Hight=255

   P:String;
   长字串不可,会有错误讯号.

   [Open array]
   function Sum( var X: array of Double): Double;
   var
     I: Word;
     S: Double;
   begin
     S := 0;
     { Note that open array index range is always zero-based. }
     for I := 0 to High(X) do S := S + X[I];
    Sum := S;
   end;
Example
function Sum( var X: array of Double): Double;

var
  I: Word;
  S: Real;
begin
  S := 0; { Note that open array index range is always zero-based. }
  for I := 0 to High(X) do S := S + X[I];
  Sum := S;
end;

procedure TForm1.Button1Click(Sender: TObject);

var
  List1: array[0..3] of Double;
  List2: array[5..17] of Double;
  X: Word;
  S, TempStr: string;
begin
  for X := Low(List1) to High(List1) do
      List1[X] := X * 3.4;
  for X := Low(List2) to High(List2) do
      List2[X] := X * 0.0123;
  Str(Sum(List1):4:2, S);
  S := 'Sum of List1: ' + S + #13#10;
  S := S + 'Sum of List2: ';
  Str(Sum(List2):4:2, TempStr);

  S := S + TempStr;
  MessageDlg(S, mtInformation, [mbOk], 0);
end;
##  Low, High Example
-----------------------------------------------------------------------------
Low    传回注脚的最小值.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Low(X);
说明  Ordinal type  The lowest value in the range of the type
   Array type  The lowest value within the range of the 
       index type of the array
   String type  Returns 0
   Open array  Returns 0
   String parameter Returns 0
-----------------------------------------------------------------------------
Ord    传回列举型态的数值.
-----------------------------------------------------------------------------
Unit  System
函数原型 function Ord(X): Longint;
范例  procedure TForm1.Button1Click(Sender: TObject);
   type
     Colors = (RED,BLUE,GREEN);
   var
     S: string;
   begin
     S := 'BLUE has an ordinal value of ' + IntToStr(Ord(RED)) + 
    #13#10;
     S := S+'The ASCII code for "c" is ' + IntToStr(Ord('c')) +  ' 
    decimal';
     MessageDlg(S, mtInformation, [mbOk], 0);
   end;
-----------------------------------------------------------------------------
Round    将实数转为整数.(有四舍五入)
-----------------------------------------------------------------------------
Unit  System
函数原型 function Round(X: Extended): Longint;
范例  var
     S, T: string;
   begin
     Str(1.4:2:1, T);
     S := T + ' rounds to ' + IntToStr(Round(1.4)) + #13#10;
     Str(1.5:2:1, T);
     S := S + T + ' rounds to ' + IntToStr(Round(1.5)) + #13#10;
     Str(-1.4:2:1, T);
     S := S + T + ' rounds to ' + IntToStr(Round(-1.4)) + #13#10;
     Str(-1.5:2:1, T);
     S := S + T + ' rounds to ' + IntToStr(Round(-1.5));
     MessageDlg(S, mtInformation, [mbOk], 0);
   end;
-----------------------------------------------------------------------------
Trunc    将实数转为整数.(小数直接舍弃)
-----------------------------------------------------------------------------
Unit  System
函数原型 function Trunc(X: Extended): Longint;
 Untyped file routines
var
   S, T: string;
begin
   Str(1.4:2:1, T);
   S := T + ' Truncs to ' + IntToStr(Trunc(1.4)) + #13#10;
   Str(1.5:2:1, T);
   S := S + T + ' Truncs to ' + IntToStr(Trunc(1.5)) + #13#10;
   Str(-1.4:2:1, T);
   S := S + T + ' Truncs to ' + IntToStr(Trunc(-1.4)) + #13#10;
   Str(-1.5:2:1, T);
   S := S + T + ' Truncs to ' + IntToStr(Trunc(-1.5));
   MessageDlg(S, mtInformation, [mbOk], 0);
end;
-------------------------
var

   f: file of Integer;
   i,j: Integer;
 begin
   AssignFile(f,'TEST.INT');
   Rewrite(f);
   for i := 1 to 6 do
     Write(f,i);
   Writeln('File before truncation:');
   Reset(f);
   while not Eof(f) do
   begin
     Read(f,i);
     Writeln(i);
   end;
   Reset(f);
   for i := 1 to 3 do
     Read(f,j); { Read ahead 3 records }
   Truncate(f); { Cut file off here }

   Writeln;
   Writeln('File after truncation:');
   Reset(f);
   while not Eof(f) do

   begin
     Read(f,i);
     Writeln(i);
   end;
   CloseFile(f);
   Erase(f);
 end;

-----------------------------------------------------------------------------
BlockRead  读取档案至记忆体区块.
-----------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  FromF, ToF: file;
  NumRead, NumWritten: Integer;
  Buf: array[1..2048] of Char;
begin
  if OpenDialog1.Execute then               { 开档对话盒}
  begin
    AssignFile(FromF, OpenDialog1.FileName);{}
    Reset(FromF, 1); { Record size = 1 }
    if SaveDialog1.Execute then             { Display Save dialog box}
    begin
      AssignFile(ToF, SaveDialog1.FileName);{ Open output file }

      Rewrite(ToF, 1); { Record size = 1 }
      Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))+'bytes...');
      repeat
        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
        BlockWrite(ToF, Buf, NumRead, NumWritten);
      until (NumRead = 0) or (NumWritten <> NumRead);
        CloseFile(FromF);
        CloseFile(ToF);
    end;
  end;
end;
##  BlockRead, BlockWrite, SaveDialog Example
-----------------------------------------------------------------------------
BlockWrite  将记忆体区块写入档案.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure BlockRead(var F: File; var Buf; Count: Integer 
    [; var Result: Integer]);
函数原型 procedure BlockWrite(var f: File; var Buf; Count: Integer 
    [; var Result: Integer]);
范例  var
     FromF, ToF: file;
     NumRead, NumWritten: Integer;
     Buf: array[1..2048] of Char;
   begin
     if OpenDialog1.Execute then
    { Display Open dialog box }
    begin
      AssignFile(FromF, OpenDialog1.FileName);
      Reset(FromF, 1);  { Record size = 1 }
      if SaveDialog1.Execute then
     { Display Save dialog box }
     begin
       AssignFile(ToF, SaveDialog1.FileName);
       { Open output file }
       Rewrite(ToF, 1);  { Record size = 1 }
       Canvas.TextOut(10, 10,'Copying '+
      IntToStr(FileSize(FromF))+ ' bytes...');
       repeat
        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
        BlockWrite(ToF, Buf, NumRead, NumWritten);
       until (NumRead = 0) or (NumWritten <> 
      NumRead);
       CloseFile(FromF);
       CloseFile(ToF);
     end;
    end;
   end;
======================================
 Variant support routines 鬼牌变数函式
======================================
VarArrayCreate 建立一个variant array.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarArrayCreate(const Bounds: array of Integer; 
    VarType: Integer): Variant;
范例  procedure TForm1.Button1Click(Sender: TObject);
   var
     A:Variant;
     S:String;
   begin
     A:=VarArrayCreate([0,4],varVariant);
     A[0]:=1;
     A[1]:=1234.5678;
     A[2]:='Hello world';
     A[3]:=TRUE;
     A[4]:=VarArrayOf([1 ,10 ,100 ,10000]);
     S:=A[4][2];
     S:=A[2]+'  '+S;
     Label1.Caption:=S;
   end;
说明  S:=A[4][2]; Variant可以不用函数来做转换.
   只能单独使用,如为下列则有误.
   S:=A[2]+'  '+A[4][2];

VarType
varEmpty  $0000 The variant is Unassigned.
varNull  $0001 The variant is Null.
varSmallint $0002 16-bit signed integer (type Smallint).
varInteger  $0003 32-bit signed integer (type Integer).
varSingle  $0004 Single-precision floating-point value 
      (type Single).
varDouble $0005 Double-precision floating-point value 
      (type Double).
varCurrency $0006 Currency floating-point value (type Currency).
VarDate  $0007 Date and time value (type TDateTime).
VarOleStr  $0008 Reference to a dynamically allocated 
      UNICODE string.
varDispatch $0009 Reference to an OLE automation object 
      (an IDispatch interface pointer).
VarError  $000A Operating system error code.
varBoolean $000B 16-bit boolean (type WordBool).
varVariant $000C Variant (used only with variant arrays).
varUnknown $000D Reference to an unknown OLE object 
      (an IUnknown interface pointer).
varByte  $0011 8-bit unsigned integer (type Byte).
VarString  $0100 Reference to a dynamically-allocated long string 
      (type AnsiString).
varTypeMask $0FFF Bit mask for extracting type code. This constant 
      is a mask that can be combined with the VType 
      field using a bit-wise AND..
varArray  $2000 Bit indicating variant array. This constant is a 
      mask that can be combined with the VType field 
      using a bit-wise AND to determine if the variant 
      contains a single value or an array of values.
VarByRef  $4000 This constant can be AND'd with Variant.VType 
      to determine if the variant contains a pointer to 
      the indicated data instead of containing the data 
      itself.

范例  var
     V1, V2, V3, V4, V5: Variant;
     I: Integer;
     D: Double;
     S: string;
   begin
     V1 := 1;   { Integer value }
     V2 := 1234.5678; { Real value }
     V3 := 'Hello world'; { String value }
     V4 := '1000';  { String value }
     V5 := V1 +V2 +V4; { Real value 2235.5678 }
     I := V1;   { I = 1 }
     D := V2;   { D = 1234.5678 }
     S := V3;   { S = 'Hello world' }
     I := V4;   { I = 1000 }
     S := V5;   { S = '2235.5678' }
   end;
-----------------------------------------------------------------------------
VarArrayOf  建立一个简单的一维variant array 
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarArrayOf(const Values: array of Variant): Variant;
范例  var
     A:Variant;
   begin
     A:=VarArrayOf([1 ,10 ,'Hello ,10000]);
     S:=A[1]+'  '+IntToStr(A[2]);
     Label1.Caption:=S;
   end;
-----------------------------------------------------------------------------
VarArrayRedim 重定variant阵列中高维部分的高注脚.
-----------------------------------------------------------------------------
Unit  System
-----------------------------------------------------------------------------
函数原型 procedure VarArrayRedim(var A: Variant; HighBound:Integer);
-----------------------------------------------------------------------------
VarArrayDimCount 传回Variant阵列的维数.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarArrayDimCount(const A: Variant): Integer;
-----------------------------------------------------------------------------
VarArrayHighBound 传回Variant阵列中一维的高注脚.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarArrayHighBound(const A: Variant; Dim: Integer):Integer;
-----------------------------------------------------------------------------
VarArrayLowBound 传回Variant阵列中一维的低注脚.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarArrayLowBound(const A: Variant; Dim: Integer): 
    Integer;
范例  procedure TForm1.Button1Click(Sender: TObject);
   var
     A:Variant;
     Count:Integer;
     HighBound:Integer;
     LowBound:Integer;
     i:Integer;
     S:String;
   begin
     A:=VarArrayCreate([0,5, 1,3],varVariant);
     Count:=VarArrayDimCount(A);
     S:=#13+'维数:'+IntToStr(Count)+#13;
     for i:=1 To Count do
    Begin
      HighBound:=VarArrayHighBound(A,i);
      LowBound:=VarArrayLowBound(A,i);
      S:=S+'HighBound: '+IntToStr(HighBound)+#13;
      S:=S+'LowBound : '+IntToStr(LowBound)+#13;
    End;
     ShowMessage(S);
   end;
-----------------------------------------------------------------------------
VarArrayLock  将variant阵列==>指定给一阵列变数.
-----------------------------------------------------------------------------
VarArrayUnLock 解除上述的指定.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarArrayLock(var A: Variant): Pointer;
函数原型 procedure VarArrayUnlock(var A: Variant);
范例  procedure TForm1.Button1Click(Sender: TObject);
   Const
     HighVal=12;
   type
     TData=array[0..HighVal, 0..HighVal] of Integer;
   var
     A:Variant;
     i,j:Integer;
     Data:^TData;
   begin
     A:=VarArrayCreate([0,HighVal, 0,HighVal],varInteger);
     for i:=0 to HighVal do
    for j:=0 to HighVal do
     A[i,j]:=i*j;
     Data:=VarArrayLock(A);
     for i:=0 to HighVal do
    for j:=0 to HighVal do
     Grid1.Cells[i+1,j+1]:=IntToStr(Data^[i,j]);
     VarArrayUnLock(A);
   end;
-----------------------------------------------------------------------------
VarIsArray   传回Variant是否为一个阵列.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarIsArray(const V: Variant): Boolean;
VarIsEmpty  传回Variant是否尚未注册.(空的)
Unit  System
函数原型 function VarIsEmpty(const V: Variant): Boolean;
范例  procedure TForm1.Button1Click(Sender: TObject);
   var
     A:Variant;
     S:String;
   begin
     A:=VarArrayCreate([0,5, 0,7],varVariant);
     if VarIsEmpty(A) Then
    S:='True'
     else
    S:='False';
     Label1.Caption:=S;
   end;
-----------------------------------------------------------------------------
**  S:=False,A以经建立了.
-----------------------------------------------------------------------------
VarIsNull   传回Variant是否为NULL.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarIsNull(const V: Variant): Boolean;
-----------------------------------------------------------------------------
VarAsType  将Variant转为另外一个型态的Variant.
-----------------------------------------------------------------------------
VarCast
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarAsType(const V: Variant; VarType: Integer): 
    Variant;
函数原型 procedure VarCast(var Dest: Variant; const Source: Variant; 
    VarType: Integer);
说明  VarType不可为varArray or varByRef.
-----------------------------------------------------------------------------
VarType   传回Variant的型态.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarType(const V: Variant): Integer;
-----------------------------------------------------------------------------
VarClear   将variant清除,成为Unassigned状态.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure VarClear(var V: Variant);
-----------------------------------------------------------------------------
VarCopy   拷贝一个variant.
-----------------------------------------------------------------------------
Unit  System
函数原型 procedure VarCopy(var Dest: Variant; const Source: Variant);
说明  与Dest:=Source;效果一样.
-----------------------------------------------------------------------------
VarFromDateTime 将DateTime转为Variant.
-----------------------------------------------------------------------------
VarToDateTime  将Variant转为DateTime.
-----------------------------------------------------------------------------
Unit  System
函数原型 function VarFromDateTime(DateTime: TDateTime): Variant;
函数原型 function VarToDateTime(const V: Variant): TDateTime;

=============================
函数
==============================
procedure TForm1.Button2Click(Sender: TObject);
var
  Bitmap: TBitmap;
begin
  Bitmap := TBitmap.Create;
  try
    Bitmap.LoadFromFile('G:/33.bmp ');
    Form1.Canvas.Brush.Bitmap := Bitmap;
    Form1.Canvas.FillRect(Rect(0,0,18,15));
  finally
    Form1.Canvas.Brush.Bitmap := nil;
    Bitmap.Free;
  end;
end;

## Canvas, Brush, Bitmap, FillRect Example
=======================================
TextOut
=======================================
procedure TForm1.FormCreate(Sender: TObject);

var
  HeaderSection: THeaderSection;
  I: Integer;
begin
  for I := 0 to 4 do
  begin
    HeaderSection := HeaderControl1.Sections.Add;
    HeaderSection.Text := 'Text Section ' + IntToStr(I);
    HeaderSection.MinWidth := length(HeaderSection.Text) * Font.Size;
    // Owner draw every other section
    if (I mod 2 = 0) then
      HeaderSection.Style := hsOwnerDraw
    else
      HeaderSection.Style := hsText;

  end;
end;

procedure TForm1.HeaderControl1DrawSection(HeaderControl: THeaderControl;
  Section: THeaderSection; const Rect: TRect; Pressed: Boolean);
begin
  with HeaderControl.Canvas do
  begin
    // highlight pressed sections
    if Pressed then
      Font.Color := clRed
    else
      Font.Color := clBlue;
    TextOut(Rect.Left + Font.Size, Rect.Top + 2, 'Owner Drawn text');
  end;
end;
## HeaderSection, OnDrawSection, Sections, Canvas, TextOut example
----------------------------------------------------------
Trunc Example
-----------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
   S, T: string;
begin
   Str(1.4:2:1, T);
   S := T + ' Truncs to ' + IntToStr(Trunc(1.4)) + #13#10;
   Str(1.5:2:1, T);
   S := S + T + ' Truncs to ' + IntToStr(Trunc(1.5)) + #13#10;
   Str(-1.4:2:1, T);
   S := S + T + ' Truncs to ' + IntToStr(Trunc(-1.4)) + #13#10;
   Str(-1.5:2:1, T);
   S := S + T + ' Truncs to ' + IntToStr(Trunc(-1.5));
   MessageDlg(S, mtInformation, [mbOk], 0);
end;


                                             
未归类
--------------------
WrapText 
--------------------
SysUtils
type TSysCharSet = set of Char
var
   S, R: string;
begin
S:= '123456_123456_123456';
R:= WrapText( S, #13#10, ['1', '4'], 4);
MessageDlg( R, mtInformation, [mbOk], 0);
end;
================================
WideCharToStrVar(Source: PWideChar;var Dest: string ); 
-------------------------
System
-----------------

=========================
WideCharToString( Source: PWideChar ): string; 
-------------------------
System

=============================
WideCharLenToStrVar( Source: PWideChar;SourceLen: Integer;var Dest: string ); 
------------------------------
System
==============================
WideCharLenToString(Source: PWideChar;SourceLen: Integer ): string
-----------------------
System
============================
AnsiCompareFileName(const S1, S2: string ): Integer;   SysUtils
===================================
AnsiExtractQuotedStr (var S: PChar;Quote: Char ): string; 
SysUtils
var
   S1: PChar;
   S2: string;
begin
   S1:= '/??. ?????????? /???.56/';
   S2:= AnsiExtractQuotedStr(S1,'/');    // S2 := '??. ?????????? '
   MessageDlg(S2, mtInformation, [mbOk], 0);
end;
----------------------------------------------------------
AnsiLastChar( const S: string ): PChar; 
SysUtils

----------------------------------------------------------

AnsiLowerCaseFileName( const S: string ): string; 
SysUtils
----------------------------------------------------------

AnsiPos ( const Substr, S: string ): Integer
SysUtils
var
   Substr, S: string;
   I: Integer;
begin
   S:= '???????? ??????';
   Substr:= '???';
   I:= AnsiPos(Substr, S);     // I:= 3
...
end;
----------------------------------------------------------

AnsiQuotedStr (const S: string;Quote: Char ): string; 
SysUtils
var
   S: string;
begin
   S:= '1997-1998??.';
   S:= AnsiQuotedStr(S, '-');     // S := '-1997--1998??.-'
   MessageDlg(S, mtInformation, [mbOk], 0);
end;
----------------------------------------------------------
AnsiSameStr ( const S1, S2: string ): Boolean;
SysUtils
----------------------------------------------------------
AnsiSameText ( const S1, S2: string ): Boolean;
SysUtils
----------------------------------------------------------

AnsiStrComp( S1, S2: PChar ): Integer
SysUtils
----------------------------------------------------------
AnsiStrIComp( S1, S2: PChar ): Integer; 
SysUtils
----------------------------------------------------------

AnsiStrLastChar( P: PChar ): PChar; 
SysUtils
----------------------------------------------------------

AnsiStrLComp(S1, S2: PChar;MaxLen: Cardinal ): Integer; 

SysUtils
var
   P1,P2: PChar;
   Len : Integer;
begin
   P1:= '?????? ?????????? ?? ?????? ????????? ????????.';
   P2:= '?????? ?????????? ?? ?????? ????????? ????????!';
   Len:= length(p1)-1;
   If AnsiStrLIComp(P1, P2, Len)=0 then MessageDlg( P1+ #13+ P2+ #13+ '??????, ? ???????? ?????? '+ IntTostr(Len)+' ????????, ?????', mtInformation, [mbOk], 0);
end;
----------------------------------------------------------

AnsiStrLIComp(S1, S2: PChar;MaxLen: Cardinal ): Integer; 

SysUtils
var
   P1,P2: PChar;
   Len : Integer;
begin
   Len:= 7;
   P1:= '?????? 1';
   P2:= '?????? 2';
   If AnsiStrLIComp(P1, P2, Len)=0 then MessageDlg( P1+ #13+ P2+ #13+ '??????, ? ???????? ?????? '+ IntTostr(Len)+' ????????, ?????', mtInformation, [mbOk], 0);
end;
----------------------------------------------------------
AnsiStrLower( S1, S2: PChar ): PChar; 
SysUtils
----------------------------------------------------------

AnsiStrPos( S, SubStr: PChar ): PChar
SysUtils
var
   S1,S2: Pchar;
begin
   S1:= '???? ? ???? - ? ????? ????!';
   S2:= AnsiStrPos(S1,'?????');     // S2 :='????? ????!'
   MessageDlg( S2, mtInformation, [mbOk], 0);
end;
----------------------------------------------------------
AnsiStrRScan( S : PChar; Chr: Char ): PChar;
SysUtils
var
   P1,P2: PChar;
begin
   P1:= 'C:/windows/temp';
   P2:= AnsiStrRScan(P1, '/');     { P2 := '/temp' }
   MessageDlg( P2, mtInformation, [mbOk], 0);
end;
----------------------------------------------------------
AnsiStrScan( S : PChar; Chr: Char ): PChar; 
SysUtils
var
   P1,P2: PChar;
begin
   P1:= 'http://www.atrussk.ru/delphi';
   P2:= AnsiStrScan(P1, '/');     { P2 := '//www.atrussk.ru/delphi' }
   MessageDlg( P2, mtInformation, [mbOk], 0);
end;
----------------------------------------------------------
AnsiStrUpper( S : PChar ): PChar

SysUtils
----------------------------------------------------------
AnsiUpperCaseFileName( const S: string ): string; 

SysUtils
----------------------------------------------------------
ByteToCharIndex(const S: string;Index: Integer ): Integer; 

SysUtils
----------------------------------------------------------
ByteToCharLen( const S: string;MaxLen: Integer ): Integer; 

SysUtils
----------------------------------------------------------
ByteType(const S: string;Index: Integer ): TMbcsByteType; 

SysUtils
mbSingleByte - 
mbLeadByte - 
mbTrailByte - 
----------------------------------------------------------
CharToByteIndex(const S: string;Index: Integer ): Integer; 

SysUtils
----------------------------------------------------------

CharToByteLen(const S: string;MaxLen: Integer ): Integer; 

SysUtils
----------------------------------------------------------
Chr ( X: Byte ): Char; 

SysUtils
MessageDlg('ASCII-???? 77 ????????????? ?????? - ' + Chr(77), mtInformation, [mbOk], 0); 
----------------------------------------------------------
FormatMaskText(const EditMask: string;const Value: string ): string; 

Mask
----------------------------------------------------------
GetFormatSettings; 
SysUtils
----------------------------------------------------------

IsDelimiter (const Delimiters, S: string;Index: Integer ): Boolean; 

SysUtils
var
   S: string;
begin
   S:= '???????, ?????? ??????????!';
   If IsDelimiter( '!.,-', S, 8) then
      MessageDlg( '???????!', mtWarning, [mbOK], 0)
   else
      MessageDlg( '??????????!', mtWarning, [mbOK], 0);
end;
----------------------------------------------------------
IsPathDelimiter (const S: string;Index: Integer ): Boolean; 

SysUtils
If IsPathDelimiter( S, Length(S))

then S:=Copy( S, 1, Length(S)-1);
----------------------------------------------------------
LastDelimiter (const Delimiters, S: string ): Integer; 
SysUtils
var
   I: Integer;
begin
   I:= LastDelimiter('!;.,-', '???????, ??????, ??????????');     // I := 16
end;
----------------------------------------------------------
LineStart( Buffer, BufPos : PChar ): PChar
Classes--
--------------------------------------------------------
QuotedStr ( const S: string ): string; 
SysUtils
----------------------------------------------------------
SetLength ( var S; Length: Integer ); 
System
----------------------------------------------------------

SetString (var S: string;Buffer: PChar;Length: Integer ); 

System
----------------------------------------------------------
Str ( X [: Width [: Decimals ]]; var S ); 
System
var

S: string;
I: Real;

begin

I:= -52.123456789;
Str( I:6:2, S);    { S := ' -52.12' }
MessageDlg( S, mtInformation, [mbOk], 0);

end;
----------------------------------------------------------
StrBufSize( S: PChar ): Cardinal; 
SysUtils
----------------------------------------------------------

StrByteType(S: PChar;Index: Cardinal ): TMbcsByteType; 
SysUtils
----------------------------------------------------------
StringOfChar (Ch: Char;Count: Integer ): string; 

System
S:= StringOfChar( '.' , 3);     // S:= '...'
----------------------------------------------------------
StringReplace (const S, OldSubstr, NewSubstr: string;Flags: TReplaceFlags ): string;
SysUtils
type TReplaceFlags = set of ( rfReplaceAll, rfIgnoreCase );

var
S: string;
Flags: TReplaceFlags;
begin
Flags:= [ rfReplaceAll, rfIgnoreCase ];
S:= '???? - ????? ?????';
S:= StringReplace( S, '??', '??', Flags);    // S :='???? - ????? ?????' }
   MessageDlg( S, mtInformation, [mbOk], 0);
end;
----------------------------------------------------------

StringToWideChar(const Source: string;Dest: PWideChar;DestSize: Integer ): PWideChar

System
----------------------------------------------------------
UniqueString( var S: string ); 
System
----------------------------------------------------------

                                             
==============================
讯息
==============================
---------------------------------------------------------------
ShowMessage                              讯息
---------------------------------------------------------------
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
----------------------------------------------------------
FindComponent
范例(1)
type
  LogPal = record
  lpal : TLogPalette; 
  dummy:Array[0..255] of TPaletteEntry; 
  end;  

procedure TForm1.SaveAsBmpClick(Sender: TObject);
var
  Source: TComponent;
  SysPal : LogPal;
  tempCanvas: TCanvas;
  sourceRect, destRect: TRect;
  image2save: TImage;
  notUsed: HWND;
begin
  Source := FindComponent(Edit1.Text);
  if (not Source is TControl) or 
     ((not Source is TWinControl) and ((Source as TControl).Parent = nil)) then

  begin
    Beep;
    ShowMessage(Edit1.Text + ' is not a valid control.');
    Exit;

  end;

  tempCanvas := TCanvas.Create;
  try
    with Source as TControl do
      tempCanvas.Handle := GetDeviceContext(notUsed);
    image2save:=TImage.create(self);
    try
      with image2save do
      begin
        Height := (Source as TControl).Height;
        Width :=  (Source as TControl).Width;
        destRect := Rect(0,0,Width,Height);
        if Source is TWinControl then

          sourceRect := destRect;
        else
          sourceRect := (Source as TControl).BoundsRect;
        Canvas.CopyRect(destRect,tempCanvas,sourceRect);
        SysPal.lPal.palVersion:=$300;
        SysPal.lPal.palNumEntries:=256;
        GetSystemPaletteEntries(tempCanvas.Handle,0,256,SysPal.lpal.PalpalEntry);
        Picture.Bitmap.Palette:= CreatePalette(Syspal.lpal);
      end;
      if SaveDialog1.Execute then 

        image2save.Picture.SaveToFile(SaveDialog1.FileName);
    finally
     image2save.Free;
    end;
  finally
    tempCanvas.Free;
  end;
end;
范例(2)
procedure TForm1.Button1Click(Sender: TObject);

var
  i: Integer;
const
  NamePrefix = 'MyEdit';
begin
  for i := 1 to 20 do begin
    TEdit.Create(Self).Name := NamePrefix + IntToStr(i);
    with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
    begin
      Left := 10;
      Top := i * 20;
      Parent := self;
    end;
  end;
end;
=========================================================
procedure TForm1.Button1Click(Sender: TObject);
var
  A: Variant;
begin
  A := VarArrayCreate([0, 4], varVariant);
  A[0] := 1;
  A[1] := 1234.5678;
  A[2] := 'Hello world';
  A[3] := True;
  A[4] := VarArrayOf([1, 10, 100, 1000]);
  Edit1.Text :=(A[2]); { Hello world }
  Edit2.Text :=(A[4][2]); { 100 }
end;
 
procedure TForm1.Button2Click(Sender: TObject);
 var
   s: string;
 begin
   s := 'Honest Abe Lincoln';
   Delete(s,8,4);
   Canvas.TextOut(10, 130, s); { 'Honest Lincoln' }
 end;

procedure TForm1.Button3Click(Sender: TObject);
 var S: string;
begin
  S := 'ABCDEF';
  S := Copy(S, 2, 3);
  Edit1.Text :=s;{ 'BCD' }
end;

procedure TForm1.Button4Click(Sender: TObject);
 var
  S: string;
begin
  S := Concat('ABC', 'DEF');
  Edit1.Text :=s;   { 'ABCDE' }
end;

procedure TForm1.Button5Click(Sender: TObject);
 var
  S: string;
begin
  S := 'Honest Lincoln';
  Insert('Abe ', S, 8);
  Edit1.Text :=s;     { 'Honest Abe Lincoln' }
end;

procedure TForm1.Button6Click(Sender: TObject);
var 
  S: string;
begin
  S := 'The Black Knight';
  Canvas.TextOut(10, 130, 'String Length = ' + IntToStr(Length(S)));{String Length = 16}
  Edit1.Text :=s;{The Black Knight}
end;

procedure TForm1.Button7Click(Sender: TObject);
var S: string;
begin
  S := '   123.5';
  { Convert spaces to zeroes }
  while Pos(' ', S) > 0 do
    S[Pos(' ', S)] := '0';
    Edit1.Text :=s; {000123.5}
end;
                                             
===========================================================================
数学函数 (Arithmetic Routines)

Unit: System
===========================================================================
Abs        传回叁数的绝对值。          function Abs(X);
ArcTan     传回正切函数的反函数值。    function ArcTan(X: Real): Real;
Cos        传回馀弦函数值              function Cos(X: Real): Real;
           (X 以弧度为单位)。          
Exp        传回自然指数值。            function Cos(X: Real): Real;
Frac       传回叁数的小数部份。        function Frac(X: Real): Real;
Int        传回叁数的整数部份。        function Int(X: Real): Real;
Ln         传回自然对数值。            function Ln(X: Real): Real;
Pi         传回圆周率π的值。          function Pi: Real;
Sin        传回正弦函数值。            function Sin(X: Real): Real;
Sqr        传回叁数的平方。            function Sqr(X: Real): (Real);
Sqrt       传回叁数的平方根。          function Sqrt(X: Real): Real;
===========================================================================
控制台函数 (Console Routines)
===========================================================================
Unit: WinCrt
函数名称         函数说明                                 函数语法
===========================================================================
AssignCrt  将文字档连结到一个控制台视窗。    procedure AssignCrt(var f: Text);
ClrEol     清附游标位置到该行最後的所有字元。procedure ClrEol;
ClrScr     清附萤幕并重置游标至左上角。      procedure ClrScr;
CursorTo   移动游标至给定座标。              procedure CursorTo(X, Y:Integer);
DoneWinCrt 结束控制台视窗。                  procedure DoneWinCrt;
GotoXY     移动游标至给定座标。              procedure GotoXY(X, Y: Byte);
InitWinCrt 建立控制台视窗。                  procedure InitWinCrt;
KeyPressed 判断是否有一按键。                function KeyPressed:Boolean;
ReadBuf    从控制台视窗读入一行。            function ReadBuf(Buffer: Pchar;Count: Word):
ReadKey 读取按键字元。function ReadKey: Char;
ScrollTo 卷动控制台视窗至显示位置。procedure ScrollTo(X, Y: Integer);
TrackCursor 卷动控制台视窗宜到游标可见。procedure TrackCursor;
WhereX 传回游标的X 座标。function WhereX: Byte;
WhereY 传回游标的Y 标标。function WhereY: Byte;
WriteBuf 写入一区块字元到控制台视窗。procedure WriteBuf
WriteChar 写一个字元到控制台视窗。procedure WriteChar(CH: Char);
=================================================
日期与时间函数 (Date and Time Routines)
Unit: SysUtils
========================================
Date 传回今天日期。function Date: TDateTime;
DateTimeToStr 将时间格式转为字串。function DateTimeToStr(DateTime: TDateTime):String;
DateTimeToString 将时间格式转为字串。
procedure DateTimeToString(var Result: string;const Format: string;DateTime: TDateTime);
DateToStr 将日期格式转为字串。function DateToStr(Date: TDateTime): String;
DayOfWeek 传回今天星期几。function DayOfWeek(Date: TDateTime): Integer;
DecodeDate 分解所指定的日期为年、月、日。
procedure DecodeDate(Date: TDateTime;var Year, Month, Day:Word);
DecodeTime 分解所指定的日期为时、分、秒。
procedure DecodeTime(Time: TDateTime;var Hour, Min, Sec,MSec: Word);
EncodeDate 传回将年、月、日所组合的日期格式。
function EncodeDate(Year, Month, Day: Word):TDateTime;
EncodeTime 传回将时、分、秒所组合的时间格式。
function EncodeTime(Hour, Min, Sec, MSec:Word): TDateTime;
FormatDateTime 以指定的格式传回日期时间。
function FormatDateTime(const Format: string;DateTime: TDateTime):String;
Now 传回现在的日期时间。function Now: TDateTime;
StrToDate 将字串转为日期格式。function StrToDate(const S:string): TDateTime;
StrToDateTime 将字串转为日期时间格式function StrToDateTime(const S: string): TDateTime;
StrToTime 将字串转为时间格式。function StrToTime(const S:string): TDateTime;
Time 传回现在时间。function Time: TDateTime;
TimeToStr 将时格式转为字串。function TimeToStr(Time:TDateTime): String;
========================================
动态配置函数(Dynamic Allocation Routines)
Unit: System
========================================
Dispose 释回一个动态变数。procedure Dispose(var P: Pointer);
Free 释放一个物件复本。procedure Free;
FreeMem 释回一给定大小的动态变数。procedure FreeMem(var P:Pointer; Size: Word);
GetMem 建立一个指定大小的动态变数,并由Pointer 叁数传回位址。
procedure GetMem(var P:Pointer; Size: Word);
New 建立一个新的动态变数,并将Pointer 叁数指向它。
procedure New(var P: Pointer);
function New(<pointer type>):Pointer;
MaxAvail 传回连续最大的可配置空间。function MaxAvail: Longint;
MemAvail 传回所有的可配置空间。function MemAvail: Longint;
========================================
档案管理函数
Unit: SysUtils
========================================
ChangeFileExt 变更档案的延伸档名。
function ChangeFileExt(const FileName,Extension: string):string;
DateTimeToFileDate 将Delphi 的日期格式转换为DOS的日期格式。
functionDateTimeToFileDate(DateTime:TDateTime): Longint;
DeleteFile 删除一个档案。
function DeleteFile(const FileName: string):Boolean;
DiskFree 传回磁碟的可用空间。function DiskFree(Drive: Byte): Longint;
DiskSize 传回指定磁碟的容量大小。function DiskSize(Drive: Byte): Longint;
ExpandFileName 传回一个完整的路径及档名字串。
function expandFileName(const FileName: string):string;
ExtractFileExt 传回档案的延伸档名。function ExtractFileExt(const FileName string):string;
ExtractFileName 传回档案的档名。function ExtractFileName(const FileName: string):string;
ExtractFilePath 传回档案的路径。function ExtractFilePath(const FileName: string):string;
FileAge 传回档案的年纪function FileAge(const FileName: string):Longint;
FileCreate 以指定档名建立一个档案。function FileCreate(const FileName: string):Integer;
FileClose 关闭指定的档案。procedureFileClose(Handle: Integer);
FileDateToDateTime 将DOS 的日期格式转为Delphi 的日期格式。
function FileDateToDateTime(FileDate: Longint):TDateTime;
FileExists 判别档案是否存在。function FileExists(const FileName: string):Boolean;
FileGetAttr 传回档案属性。function FileGetAttr(const FileName: string):Integer;
FileGetDate 传回档案的日期及时间。function FileGetDate(Handle: Integer): Longint;
FileRead 从指定的档案读入资料。
function FileRead(Handle:Integer; var Buffer;Count:Longint):Longint;
FileSearch 在目录列中搜寻指定的档案。function FileSearch(constName, DirList: string):string;
FileSeek 改变档案游标的位置。function FileSeek(Handle: Integer;Offset: Longint;Origin: Integer):Longint;
FileSetAttr 设定档案属性。function FileSetAttr(const FileName: string;Attr:Integer): Integer;
FileSetDate 设定档案的日期及时间。procedure FileSetDate(Handle: Integer; Age:Longint);
FileOpen 开启档案。function FileOpen(const FileName: string; Mode:Word): Integer;
FileWrite 写资料到档案。function FileWrite(Handle:Integer;const Buffer; Count:Longint): Longint;
FindClose 终止找寻第一个/下一个的动作。procedure FindClose(var SearchRec: TSearchRec);
FindFirst 寻找第一个符合的档案并设定其属性。
function FindFirst(const Path: string;Attr: Word; var F:TSearchRec): Integer;
FindNext 传回下一个符合的档案。function FindNext(var F:TSearchRec): Integer;
RenameFile 变更档名。function RenameFile(const OldName,NewName: string):Boolean;
========================================
浮点数转换函数 (Floating-point Conversion Routines)
Unit: SysUtils
========================================
FloatToDecimal 将浮点数值分成小数及整数部份的数字传回。
procedure FloatToDecimal(var Result: TFloatRec;Value:Extended;Precision, Decimals:Integer);
FloatToStrF 依照指定格式将浮点数转成字串描述。
function FloatToStrF(Value: Extended; Format:TFloatFormat;Precision,Digits: Integer): string;
FloatToStr 将浮点数转成字串描述。function FloatToStr(Value: Extended): string;
FloatToText 将所给的浮点数值,分成小数及整数部份的数字依照格式传回。
function FloatToText(Buffer: Pchar; Value:Extended;Format:TFloatFormat;Precision,Digits: Integer): Integer;
FloatToTextFmt 将浮点数依照格式转成字串传回。
function FloatToTextFmt(Buffer: PChar; Value:Extended;Format: PChar) :Integer;
FormatFloat 将浮点数值依照Format 格式传回。
function FormatFloat(constFormat: string;Value:Extended):string;
StrToFloat 将所给字串转成一个浮点数值。
function StrToFloat(const S: string): Extended;
TextToFloat 将一个null 结尾字串转成浮点数值
function TextToFloat(Buffer: PChar;var Value:Extended): Boolean;
========================================
流程控制函数 (Flow-control Routines)
Unit: System
========================================
Break 终止回圈。如for, while 及repeat 回圈。
procedure Break;
Continue 继续回圈。如for, while 及repeat 回圈。
procedure Continue;
Exit 离开目前的区块。procedure Exit;
Halt 停止程式的执行并回到作业系统。
procedure Halt[ ( Exitcode: Word ) ];
RunError 停止程式执行。procedure RunError[ ( Errorcode: Byte ) ];
========================================
输出入函数 (I/O Routines)
Unit: System
========================================
AssignFile 指定一个档案到档案变数。procedure AssignFile(var f, String);
CloseFile 关闭档案。procedure CloseFile(var F);
Eof 判断是否已到档案结尾。
Typed or untyped files: functionEof(var F): BooleanText files:function Eof [ (var F: Text) ]:Boolean;
Erase 清除档案内容。procedure Erase(var F);
FilePos 传回目前档案游标位置。function FilePos(var F): Longint;
FileSize 传回档案的大小function FileSize(var F):Longint;
GetDir 传回指定磁碟的工作目录。procedure GetDir(D: Byte; var S: String);
IOResult 传回最後I/O 执行的状态。function IOResult: Integer;
MkDir 建立一子目录。procedure MkDir(S: String);
Rename 变更外部档案的档名。procedure Rename(var F; Newname);
Reset 开启一个已存在的档案。procedure Reset(var F [: File; Recsize: Word ] );
Rewrite 建立并开启一个新档。procedure Rewrite(var F: File [; Recsize: Word ] );
RmDir 删除一个空目录。procedure RmDir(S: String);
Seek 移动档案游标。procedure Seek(var F; N: Longint);
Truncate 删截目前位置以後的档案内容。procedure Truncate(var F);
========================================
记忆体管理函数 Memory-management Routines)
Unit: SysUtils
========================================
AllocMem 配置一个记忆体区块给堆积heap 。
function AllocMem(Size: Cardinal): Pointer;
ReAllocMem 从堆积释回一区块。function ReAllocMem(P: Pointer;CurSize, NewSize:Cardinal): Pointer;
========================================
杂项函数 (Miscellaneous Routines)
Unit: System, SysUtils
========================================
AddExitProc 加入一个程序到执行时期程式库的出囗程序列中。
procedure AddExitProc(Proc: TProcedure);
Exclude 从一个集合除去一个元素。procedure Exclude(var S: set of T;I:T);
FillChar 以一个字元填入指定个数到一个变数上。
procedure FillChar(var X; Count: Word; value);
Hi 传回叁数的高位元组。function Hi(X): Byte;
Include 将元素包含到集合内。procedure Include(var S: set of T; I:T);
Lo 传回叁数的低位元组。function Lo(X): Byte;
Move 从Source 复制Count 个数的位元组到Dest 。
procedure Move(varSource,Dest; Count: Word);
ParamCount 传回命令列叁数的个数。function ParamCount: Word;
ParamStr 传回一个指定的命令列叁数。function ParamStr(Index): String;
Random 传回一个随机乱数。function Random[ ( Range: Word) ];
Randomize 初值化乱数产生器。procedure Randomize;
SizeOf 传回叁数所占位元组数。function SizeOf(X): Word;
Swap 将叁数的高位元组和低位元组交换。function Swap(X);
TypeOf 传回指向物件型态的虚拟方法表的指标。function TypeOf(X) : Pointer
UpCase 将字元转为大写。function UpCase(Ch: Char):Char;
========================================
次序函数 (Ordinal Routines)
Unit: System
========================================
Dec 递减一个变数。procedure Dec(var X[ ; N:Longint]);
Inc 递增一个变数procedure Inc(var X[ ; N:Longint ] );
Odd 判别式否为奇数。function Odd(X: Longint):Boolean;
Pred 传回叁数的前任者。function Pred(X);
Succ 传回叁数的後继者。function Succ(X);
========================================
指标和位址函数 (Pointer and Address Routines)
Unit: System
========================================
addr 传回指定物件的位址。function Addr(X): pointer;
Assigned 判断是否一个函数或程序是nil function Assigned(var P):Boolean;
CSeg 传回CS 程式段暂存器的内容。function CSeg: Word;
DSeg 传回DS 资料段暂存器的内容。function DSegt: Word;
Ofs 传回叁数的偏移位址。function Ofs(X): Word;
Ptr 将所指定的节段及偏移位址组合到一个指标。function Ptr(Seg, Ofs: Word):Pointer;
Seg 传回叁数的节段位址。function Seg(X): Word;
SPtr 传回SP 堆叠存器的内容。function SPtr: Word;
SSeg 传回SS 堆叠段暂存器的内容。function SSeg: Word;
========================================
字串格式函数 (String-formatting Routines)
Unit: SysUtils
========================================
FmtStr 将所列叁数依照Format 的格式组合到Result 字串传回。
procedure FmtStr(var Resut: string; const Format:string;const Args: array of const);
Format 将所列叁数依照Format 的格式组合到Pascal 格式字串传回。
fonction Format(const Format: string;const Args:array of const): string;
FormatBuf 格式化所列的叁数。
FormatBuf(var Buffer;BufLen: Cardinal;const Format;FmtLen: Cardinal;const Args: array of string ): Cardinal; 
function FormatBuf(var Buffer; BufLen: Word;const Format; FmtLen:Word;Const Args: array of const):Word;
StrFmt 格式化所列的叁数。
function StrFmt(Buffer, Format: PChar;const Args: array of const):PChar;
SysUtils
StrLFmt 格式化所列叁数,并将结果指向Buffer 指标。
function StrLFmt(Buffer: PChar; MxLen: Word;Format: PChar;const Args: array of const):PChar;
SysUtils
========================================
字串处理函数(String-handling Routines :Pascal-style)
Unit: SystUtils
========================================
AnsiCompareStr 比较两个字串。function AnsiCompareStr(const S1, S2: string):Integer;
SysUtils
var
   S: string;
   mas: array[0..99] of string;
   i, j: integer;
begin
...
   for i:=1 to 98 do
     for j:=i+1 to 99 do
       if AnsiCompareStr( mas[i], mas[j] ) >0 then
         begin
         S:= mas[i]; mas[i]:= mas[j]; mas[j]:= S;
         end;
end; 
var

S1,S2: string;
I: Integer;

begin

S1:= '? ???? ???????? ??????';
S2:= '? ???? ???????? ??????';
I:= CompareStr(S1, S2);     { I > 0, ?.?. S1 > S2 }
if I<>0 then
    MessageDlg( '?????? ????????!', mtWarning, [mbOK],0);
end;

AnsiCompareText 比较两个字串且无大小写区别。
AnsiCompareText ( const S1, S2: string ): Integer; 
SysUtils
AnsiCompareStr('a', 'A') <0
CompareStr('a', 'A') >0

function AnsiCompareText(const S1, S2: string):Integer;
AnsiLowerCase 将字串内容转为小写。function AnsiLowerCase(const S: string): string;
SysUtils
var
   S: string;
begin
   S:= 'MyFile.TXT';
   S:= AnsiLowerCase(S);      // S := 'myfile.txt'
   MessageDlg(S, mtInformation, [mbOk], 0);
end;

AnsiUpperCase 将字串内容转为大写。function AnsiUpperCase(const S: string): string;
SysUtils
var
   S: string;
begin
   S:= 'c:/windows';
   S:= AnsiUpperCase (S);     { S := 'C:/WINDOWS' }
   MessageDlg(S, mtInformation, [mbOk], 0);
end;

AppendStr 将所给字串连接到Dest 字串後面。procedure AppendStr(var Dest: string; const S:string);
AssignStr 配置记忆体空间给字串。procedure AppendStr(var P: PString; const S:String);
CompareStr 比较两个字串。function CompareStr(const S1,S2: string):Integer;
CompareText 比较两个字串且无大小写区别。function CompareText(const S1, S2: String):Integer;
Concat 连结所列字串。function Concat(s1 [, s2,… , sn]: String):String;
Copy 传回字串的部份字串内容。function Copy(S: String; Index, Count:Integer): String;
Delete 删除所给字串内的子字串。procedure Delete(var S: String; Index,Count:Integer);
DisposeStr 释回字串占用的空间。procedure DisposeStr(P: PString);
FmtLoadStr 从程式的资源字串表中载入一个字串。
FmtLoadStr(Ident: Integer;const Args: array of string ): string; 
SysUtils

function FmtLoadStr(Ident: Word;const Args: array of const): string;
Insert 在一个字串内插入一个子字串
procedure Insert(Source: String; var S: String;Index: Integer);
Insert (Source: string;var S: string;Index: Integer ); 
System
var
   S: string;
begin
   S:= '??????? ?????? ??????????.';
   Insert( '!', S, 8);       { S := '???????! ?????? ??????????.'}
   MessageDlg( S, mtWarning, [mbOK],0); 
end;

IntToHex 将一个整数转为十六进位。
function IntToHex(Value: Longint; Digits:Integer): string;
IntToStr 将数字转成字中格式。function IntToStr(Value: Longint): string;
IsValidIdent 判别字串内容是否为正确的识别字。function IsValidIdent(const Ident: string):Boolean;
Length 传回字串的长度。function Length(S: String): Integer;
LoadStr 从应用程式的可执行档中载入一个字串资源。
function LoadStr(Ident: Word): string;
SysUtils
LowerCase 将字串转成小写。function LowerCase(const S: string): string;
NewStr 从堆积配置一个字串空间。function NewStr(const S: string): PString;
Pos 传回子字串在字串中的位置。function Pos(Substr: String; S: String):
Str 将数值转为字串。procedure Str(X [: Width [: Decimals ]];var S);
StrToInt 将字串转为整数值。function StrToInt(const S: string): Longint;
StrToIntDef 将字串转整数值或预设值。function StrToIntDef(const S: string; Default:Longint): Longint;
Uppercase 将字串转成大写。function UpperCase(const S: string): string;
SysUtils
var
   S: string;
begin
   S:= UpperCase( '???????? Intel');       { S := '???????? INTEL'}
end;
val 将字串内容转为数值描述。procedure Val(S; var V; var Code: Integer);
System  { $R+ }  { $R- }
var
   I, Code: Integer;
begin
Val( Edit1.Text, I, Code); { ??????????????? ????? ????????? ? ???? Edit1.Text ? ???????? ????? }
if Code<>0 then { ????????? ??????? ?????? ? ????????? ?????
    MessageDlg( '?????? ???????? ? ???????: '+ IntToStr(Code), mtWarning,[mbOk], 0)
else     { ??????? ??????? ?????}
    Canvas.TextOut( 20, 20, IntToStr(Sqr(I)));
end;
========================================
字串处理函数 (String-handling Routines : Null-terminated)
Unit: SysUtils
========================================
StrAlloc 配置一个最大长度为Size-1 的缓冲区给null 结尾字串
function StrAlloc(Size: Word): PChar;
StrBufSize 传回由StrAlloc 配置的字串缓冲区内可以储存的最大字元数。
StrBufSize( S: PChar ): Cardinal; 
SysUtils

function StrBufSize(Str: PChar): Wrd;StrCat 连结两个字串并传回该字串。
function StrCat(Dest, Source: PCar): PChar;
StrComp 比照两个字串。function StrComp(Str1, Str2 : Pchar): Integer;
StrCopy 拷贝Source 字串到Dest 上。function StrCopy(Dest, Source: PChar): PChar
StrDispose 释回一个字串空间。function StrDispose(Str:PChar);
StrCopy 拷贝Source 字串到Dest 上并传回指向该字串结尾的指标。
function StrECopy(Dest, Surce: Pchar): Pchar;
StrEnd 传回一指标指向字串的结尾function StrEnd(Str: Pchar): Pchar;
StrLCat 将Source 字串连结到Dest 字串後,并传回连结的字串。
function StrLCat(Dest, Source:PCar; MaxLen: Word): PChar;
StrIComp 比较两个字串具无大小写区别
function StrIComp(Str1, Str2:Pchar): Integer;
StrLComp 比较两个字串到所指定的最大长度
function StrLComp(Str1, Str2:Pchar; MaxLen: Word): Integer;
StrLCopy 从一字串拷贝指定字元数到另一字串
Function StrLCopy(Dest,Source:PChar;MaxLen: Cardinal): PChar;
StrLen 传回字串的长度。function StrLen(Str: PChar):Cardinal;
StrLIComp 比较两个字串到所指定的最大长度具无大小写区别。
function StrLIComp(Str1, Str2:PChar; MaxLen: Word):Integer;
StrLower 将字串转成小写。
function StrLower(Str: PChar):PChar;
StrMove 拷贝Count 字元数,从Source 到Dest字串。
function StrMove(Dest, Source:PChar; Count: Cardinal): PChar
StrNew 从堆积配置一个字串。function StrNew(Str: PChar):PChar;
StrPas 将null 结尾字中转成一个Pascal 格式字串。
function StrPas(Str: Pchar):String;
StrPCopy 拷贝一个Pascal 格式字串到一个null结尾字串。
Function StrPCopy(Dest:PChar;Source: String): PChar;
StrPLCopy 拷贝MaxLen 所指字元数,从Pascal格式字串到null 结尾字串。
Function StrPLCopy(Dest:Pchar;cost Source: string;MaxLen: Word): PChar;
StrPos 传回一指标指向在Str1 内最先出现 Str2 字串的位置。
function StrPos(Str1, Str2: Pchar): Pchar;
StrScan 传回一指标指向在Str 字串中第一个出现chr 字元的位置。
function StrScan(Str: PChar; Chr: Char): PChar;
StrRScan 传回一指标指向在Str 子串中最後出现chr 字元的位置。
function StrRScan(Str: Pchar; Chr: Char): PChar;
StrUpper 将字串转成大写。function StrUpper(Str: PChar):PChar;
======================================== 
文字档案函数 (Text-file Routines)
Unit: System
========================================
Append 开启一个存在的档案供增加。procedure Append(var f: Text);
Eoln 判别一文字档是否在行尾。function Eoln [(var F: Text) ]:Boolean;
Flush 清除文字输出档的缓冲区。procedure Flush(var F: Text);
Read 从档案读入资料到所列变数。Typed files:
Procedure Read(F , V1[, V2,… ,Vn ] );
Text files:
procedure Read( [ var F: Text; ] V1 [,V2,… ,Vn]);
Readln 从档案读入资料到所列变数并跳至下一行。
procedure Readln( [ var F:Text; ]V1 [, V2,… ,Vn ]);
SeekEof 判别是否已到档尾。function SeekEof [ ( var F:Text) ]: Boolean;
SeekEoln 判别一档案是否在行尾。function SeekEoln [(var F: Text) ]: Boolean;
SetTextBuf 指定一个I/O 缓冲区给一文字档。procedure SetTextBuf(var F: Text; var Buf [ ; Size:Word ] );
Write 将变数内的资料写到档案。Text files:
procedure Write( [ var F:Text; ] P1 [,P2,… ,Pn ] ); 
Typed files:
procedure Write(F, V1[V2,… Vn]);
writeln 执行Write 程序并输出一个跳行到档案。
procedure Writeln([ var F: Text; ] P1 [, P2,… ,Pn ] );
========================================
转换函数(Transfer Routines)
Unit: System 
========================================
Chr 传回ASCII 码所对应的字元。function Chr(X: Byte): Char;
Delphi 源码任务 ( http://home.kimo.com.tw/bruce0211/ ) 打字整理15
High 传回叁数在范围内的最高值。function High(X);
Low 传回叁数在范围内的最低值。function Low(X);
Ord 传回一个有序型态所对应的顺序值。function Ord(X): Longint;
Round 将一个实数值四舍五入而传回整数值。function Round(X: Real):Longint;
Trunc 将一个实数值去尾而传回整数值。function Trunc(X: Real):Longint;
========================================
未定型态档案函数(Untyped-file Routines)
Unit: System
========================================
BlockRead 从档案读入一个或数个记录到Buf 变数。
procedure BlockRead(var F: File; var Buf;Count: Word [; var Result:Word]);
BlockWrite 从一变数写入一个或数个记录。
procedure BlockWrite(var f: File; var Buf;Count: Word [; var Result:Word]);
======================================================
                                             
WinAPI 控件与消息函数
----------------
                 AdjustWindowRect  
                 AdjustWindowRectEx
给定一种窗囗样式,计算获得目标客户区矩形所需的窗囗大小 
======================================================
VB声明 
Declare Function AdjustWindowRect Lib "user32" Alias "AdjustWindowRect" (lpRect As RECT, ByVal dwStyle As Long, ByVal bMenu As Long) As Long
Declare Function AdjustWindowRectEx Lib "user32" Alias "AdjustWindowRectEx" (lpRect As RECT, ByVal dsStyle As Long, ByVal bMenu As Long, ByVal dwEsStyle As Long) As Long 
说明 
在给定一种窗囗样式的前提下,计算获得目标客户区矩形所需的窗囗大小 
返回值 
Long,如执行成功,则返回非零值;如失败,返回零值。会设置GetLastError 

叁数表 
叁数 类型及说明 
lpRect RECT,最初包含要求的客户区。由函数设为目标窗囗矩形大小 
dwStyle Long,窗囗样式 
bMenu Long,如窗囗有菜单,则设为TRUE(非零) 
dwEsStyle Long,扩展窗囗样式(只适用於AdjustWindowRectEx) 
注解 
在调用本函数前,先用GetWindowLong取得一个窗体的样式。如菜单占用两行以上的空间,则函数不能正确计算大小。如程序使用了多行标题,则应使用GetSystemMetrics
======================================================
                    AnyPopup 
判断屏幕上是否存在任何弹出式窗囗 
-----------------------------------------
VB声明 
Declare Function AnyPopup Lib "user32" Alias "AnyPopup" () As Long 
说明 
判断屏幕上是否存在任何弹出式窗囗 
返回值 
Long,如存在弹出式菜单,则返回TRUE(非零) 
注解 
对该函数来说,弹出式菜单包含所有可见的包容顶级窗囗,无论弹出式还是重叠窗囗
=====================================================
ArrangeIconicWindows 排列一个父窗囗的最小化子窗囗 
VB声明 
Declare Function ArrangeIconicWindows Lib "user32" Alias "ArrangeIconicWindows" (ByVal hwnd As Long) As Long 
说明 
排列一个父窗囗的最小化子窗囗(在vb里使用:用於在桌面排列图标,用GetDesktopWindow
函数获得桌面窗囗的一个句柄) 
返回值 
Long,图标行的高度;如失败,则返回零。会设置GetLastError 
叁数表 
叁数 类型及说明 
hwnd Long,父窗囗的句柄 
注解 

也可将该函数用於包含了图标化子窗囗的的定制控件
=======================================================
AttachThreadInput 连接线程输入函数 
BeginDeferWindowPos 启动构建一系列新窗囗位置的过程 
BringWindowToTop 将指定的窗囗带至窗囗列表顶部 
CascadeWindows 以层叠方式排列窗囗 
ChildWindowFromPoint 返回父窗囗中包含了指定点的第一个子窗囗的句柄 

ClientToScreen 判断窗囗内以客户区坐标表示的一个点的屏幕坐标 
CloseWindow 最小化指定的窗囗 
CopyRect 矩形内容复制 
DeferWindowPos 该函数为特定的窗囗指定一个新窗囗位置 
DestroyWindow 清除指定的窗囗以及它的所有子窗囗 
DrawAnimatedRects 描绘一系列动态矩形 
EnableWindow 指定的窗囗里允许或禁止所有鼠标及键盘输入 
EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗囗的位置及状态
EnumChildWindows 为指定的父窗囗枚举子窗囗 

EnumThreadWindows 枚举与指定任务相关的窗囗 
EnumWindows 枚举窗囗列表中的所有父窗囗 
EqualRect 判断两个矩形结构是否相同 
FindWindow 寻找窗囗列表中第一个符合指定条件的顶级窗囗 
FindWindowEx 在窗囗列表中寻找与指定条件相符的第一个子窗囗 
=============================
                   FlashWindow 闪烁显示指定窗囗 
-----------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Show;
  Form1.BringToFront;
  Timer1.Interval:=GetCaretBlinkTime;
  Timer1.Enabled:=Not Timer1.Enabled;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  FlashWindow(Form2.Handle,TRUE);
end;
==============================
GetActiveWindow 获得活动窗囗的句柄 
GetCapture 获得一个窗囗的句柄,这个窗囗位於当前输入线程,且拥有鼠标捕获(鼠标活动由它接收) 
GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息 

GetClassLong 取得窗囗类的一个Long变量条目 
GetClassName 为指定的窗囗取得类名 
GetClassWord 为窗囗类取得一个整数变量 
GetClientRect 返回指定窗囗客户区矩形的大小 
GetDesktopWindow 获得代表整个屏幕的一个窗囗(桌面窗囗)句柄 
GetFocus 获得拥有输入焦点的窗囗的句柄
GetForegroundWindow 获得前台窗囗的句柄 
GetLastActivePopup 获得在一个给定父窗囗中最近激活过的弹出式窗囗的句柄 
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 

GetParent 判断指定窗囗的父窗囗 
GetTopWindow 搜索内部窗囗列表,寻找隶属於指定窗囗的头一个窗囗的句柄 
GetUpdateRect 获得一个矩形,它描叙了指定窗囗中需要更新的那一部分 
=================================================
                      GetWindow 
获得一个窗囗的句柄,该窗囗与某源窗囗有特定的关系 
------------------------------------------------
procedure TForm1.Timer1Timer(Sender: TObject);
var
 s:array [0..29999]of char;
 H:integer;
begin
  h:=Getwindow(handle,GW_OWNER );
  //Getwindow取一个窗囗的句柄,该窗囗与某源窗囗有特定的关系
  getwindowtext(H,s,300);
  //getwindowtext取一个窗体标题(caption)文字,或控件内容
  Edit1.text:=inttostr(H);
  Label1.caption := S;
end;
================================================
GetWindowContextHelpId 取得与窗囗关联在一起的帮助场景ID 
GetWindowLong 从指定窗囗的结构中取得信息 
GetWindowPlacement 获得指定窗囗的状态及位置信息 
GetWindowRect 获得整个窗囗的范围矩形,窗囗的边框、标题栏、滚动条及菜单等都在这个矩形内 
================================================
                    GetWindowText 
取得一个窗体的标题(caption)文字,或者一个控件的内容 
--------------------------
procedure TForm1.Timer1Timer(Sender: TObject);
var
 s:array [0..29999]of char;
 H:integer;
begin
  h:=Getwindow(handle,GW_OWNER );
  //Getwindow取一个窗囗的句柄,该窗囗与某源窗囗有特定的关系
  getwindowtext(H,s,300);
  //getwindowtext取一个窗体标题(caption)文字,或控件内容
  Edit1.text:=inttostr(H);
  Label1.caption := S;
end;
============================
GetWindowTextLength 调查窗囗标题文字或控件内容的长短 
GetWindowWord 获得指定窗囗结构的信息 
InflateRect 增大或减小一个矩形的大小 
IntersectRect 这个函数在lpDestRect里载入一个矩形,它是lpSrc1Rect与lpSrc2Rect两个矩形的交集
InvalidateRect 屏蔽一个窗囗客户区的全部或部分区域 
IsChild 判断一个窗囗是否为另一窗囗的子或隶属窗囗 

IsIconic 判断窗囗是否已最小化 
IsRectEmpty 判断一个矩形是否为空 
IsWindow 判断一个窗囗句柄是否有效 
IsWindowEnabled 判断窗囗是否处於活动状态 
IsWindowUnicode 判断一个窗囗是否为Unicode窗囗。这意味着窗囗为所有基於文本的消息都接收Unicode文字 
IsWindowVisible 判断窗囗是否可见 
IsZoomed 判断窗囗是否最大化 
LockWindowUpdate 锁定指定窗囗,禁止它更新 
MapWindowPoints 将一个窗囗客户区坐标的点转换到另一窗囗的客户区坐标系统 

MoveWindow 改变指定窗囗的位置和大小 
OffsetRect 通过应用一个指定的偏移,从而让矩形移动起来 
OpenIcon 恢复一个最小化的程序,并将其激活 
PtInRect 判断指定的点是否位於矩形内部 
RedrawWindow 重画全部或部分窗囗
ReleaseCapture 为当前的应用程序释放鼠标捕获 
ScreenToClient 判断屏幕上一个指定点的客户区坐标 
ScrollWindow 滚动窗囗客户区的全部或一部分 
ScrollWindowEx 根据附加的选项,滚动窗囗客户区的全部或部分 

SetActiveWindow 激活指定的窗囗 
SetCapture 将鼠标捕获设置到指定的窗囗 
SetClassLong 为窗囗类设置一个Long变量条目 
SetClassWord 为窗囗类设置一个条目 
SetFocusAPI 将输入焦点设到指定的窗囗。如有必要,会激活窗囗 
SetForegroundWindow 将窗囗设为系统的前台窗囗 
SetParent 指定一个窗囗的新父 
SetRect 设置指定矩形的内容 
SetRectEmpty 将矩形设为一个空矩形 
SetWindowContextHelpId 为指定的窗囗设置帮助场景(上下文)ID 

SetWindowLong 在窗囗结构中为指定的窗囗设置信息 
SetWindowPlacement 设置窗囗状态和位置信息

SetWindowPos 为窗囗指定一个新位置和状态 
SetWindowText 设置窗囗的标题文字或控件的内容 
SetWindowWord 在窗囗结构中为指定的窗囗设置信息 
ShowOwnedPopups 显示或隐藏由指定窗囗所有的全部弹出式窗囗 
ShowWindow 控制窗囗的可见性 
ShowWindowAsync 与ShowWindow相似 
SubtractRect 装载矩形lprcDst,它是在矩形lprcSrc1中减去lprcSrc2得到的结果 

TileWindows 以平铺顺序排列窗囗 
UnionRect 装载一个lpDestRect目标矩形,它是lpSrc1Rect和lpSrc2Rect联合起来的结果 
UpdateWindow 强制立即更新窗囗 
ValidateRect 校验窗囗的全部或部分客户区 
WindowFromPoint 返回包含了指定点的窗囗的句柄。忽略屏蔽、隐藏以及透明窗囗
======================================================
硬件与系统函数
----------------
                  ActivateKeyboardLayout 
激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 
-----------------------------
VB声明 
Declare Function ActivateKeyboardLayout Lib "user32" Alias "ActivateKeyboardLayout" (ByVal HKL As Long, ByVal flags As Long) As Long 
说明 
激活一个新的键盘布局。键盘布局定义了按键在一种物理性键盘上的位置与含义 
返回值 
Long,如执行成功,返回前一个键盘布局的句柄;零表示失败。会设置GetLastError 
叁数表 
叁数 类型及说明 
HKL Long,指定一个键盘布局的句柄。这个布局是随同LoadKeyboardLayout 或 GetKeyboardLayoutList函数载入的。也可用HKL_NEXT常数激活下一个已装载布局;或用
HKL_PREV载入前一个布局 

flags Long,将指定的键盘移至内部键盘布局列表的起始处
=====================================================
Beep 用於生成简单的声音 
CharToOem 将一个字串从ANSI字符集转换到OEM字符集 
ClipCursor 将指针限制到指定区域 
ConvertDefaultLocale 将一个特殊的地方标识符转换成真实的地方ID 
CreateCaret 根据指定的信息创建一个插入符(光标),并将它选定为指定窗囗的默认插入符 
DestroyCaret 清除(破坏)一个插入符 
EnumCalendarInfo 枚举在指定“地方”环境中可用的日历信息 

EnumDateFormats 列举指定的“当地”设置中可用的长、短日期格式 
EnumSystemCodePages 枚举系统中已安装或支持的代码页 
EnumSystemLocales 枚举系统已经安装或提供支持的“地方”设置 
EnumTimeFormats 枚举一个指定的地方适用的时间格式 
ExitWindowsEx 退出windows,并用特定的选项重新启动 
ExpandEnvironmentStrings 扩充环境字串 
FreeEnvironmentStrings 翻译指定的环境字串块 
GetACP 判断目前正在生效的ANSI代码页

GetAsyncKeyState 判断函数调用时指定虚拟键的状态 
GetCaretBlinkTime 判断插入符光标的闪烁频率 
GetCaretPos 判断插入符的当前位置 
GetClipCursor 取得一个矩形,用於描述目前为鼠标指针规定的剪切区域 
GetCommandLine 获得指向当前命令行缓冲区的一个指针 
GetComputerName 取得这台计算机的名称 
GetCPInfo 取得与指定代码页有关的信息 
GetCurrencyFormat 针对指定的“地方”设置,根据货币格式格式化一个数字 
GetCursor 获取目前选择的鼠标指针的句柄 

GetCursorPos 获取鼠标指针的当前位置 
GetDateFormat 针对指定的“当地”格式,对一个系统日期进行格式化 
GetDoubleClickTime 判断连续两次鼠标单击之间会被处理成双击事件的间隔时间 
GetEnvironmentStrings 为包含了当前环境字串设置的一个内存块分配和返回一个句柄 
GetEnvironmentVariable 取得一个环境变量的值 
GetInputState 判断是否存在任何待决(等待处理)的鼠标或键盘事件 
GetKBCodePage 由GetOEMCP取代,两者功能完全相同
GetKeyboardLayout 取得一个句柄,描述指定应用程序的键盘布局 

GetKeyboardLayoutList 获得系统适用的所有键盘布局的一个列表 
GetKeyboardLayoutName 取得当前活动键盘布局的名称 
GetKeyboardState 取得键盘上每个虚拟键当前的状态 
GetKeyboardType 了解与正在使用的键盘有关的信息 
GetKeyNameText 在给出扫描码的前提下,判断键名 
GetKeyState 针对已处理过的按键,在最近一次输入信息时,判断指定虚拟键的状态 
GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息 
GetLocaleInfo 取得与指定“地方”有关的信息 

GetLocalTime 取得本地日期和时间 
GetNumberFormat 针对指定的“地方”,按特定的格式格式化一个数字 
GetOEMCP 判断在OEM和ANSI字符集间转换的windows代码页 
GetQueueStatus 判断应用程序消息队列中待决(等待处理)的消息类型 
GetSysColor 判断指定windows显示对像的颜色 
GetSystemDefaultLangID 取得系统的默认语言ID 
GetSystemDefaultLCID 取得当前的默认系统“地方”
GetSystemInfo 取得与底层硬件平台有关的信息 

GetSystemMetrics 返回与windows环境有关的信息 
GetSystemPowerStatus 获得与当前系统电源状态有关的信息 
GetSystemTime 取得当前系统时间,这个时间采用的是“协同世界时间”(即UTC,也叫做GMT)格式 
GetSystemTimeAdjustment 使内部系统时钟与一个外部的时钟信号源同步 
GetThreadLocale 取得当前线程的地方ID 
GetTickCount 用於获取自windows启动以来经历的时间长度(毫秒) 
GetTimeFormat 针对当前指定的“地方”,按特定的格式格式化一个系统时间 

GetTimeZoneInformation 取得与系统时区设置有关的信息 
GetUserDefaultLangID 为当前用户取得默认语言ID 
GetUserDefaultLCID 取得当前用户的默认“地方”设置 
GetUserName 取得当前用户的名字 
GetVersion 判断当前运行的Windows和DOS版本 
GetVersionEx 取得与平台和操作系统有关的版本信息 
HideCaret 在指定的窗囗隐藏插入符(光标) 
IsValidCodePage 判断一个代码页是否有效
IsValidLocale 判断地方标识符是否有效 

keybd_event 这个函数模拟了键盘行动 
LoadKeyboardLayout 载入一个键盘布局 
MapVirtualKey 根据指定的映射类型,执行不同的扫描码和字符转换 
MapVirtualKeyEx 根据指定的映射类型,执行不同的扫描码和字符转换 
MessageBeep 播放一个系统声音。系统声音的分配方案是在控制面板里决定的 
mouse_event 模拟一次鼠标事件 
OemKeyScan 判断OEM字符集中的一个ASCII字符的扫描码和Shift键状态 
OemToChar 将OEM字符集的一个字串转换到ANSI字符集 

SetCaretBlinkTime 指定插入符(光标)的闪烁频率 
SetCaretPos 指定插入符的位置 
SetComputerName 设置新的计算机名 
SetCursor 将指定的鼠标指针设为当前指针 
SetCursorPos 设置指针的位置 
SetDoubleClickTime 设置连续两次鼠标单击之间能使系统认为是双击事件的间隔时间 
SetEnvironmentVariable 将一个环境变量设为指定的值
SetKeyboardState 设置每个虚拟键当前在键盘上的状态 
SetLocaleInfo 改变用户“地方”设置信息 

SetLocalTime 设置当前地方时间 
SetSysColors 设置指定窗囗显示对像的颜色 
SetSystemCursor 改变任何一个标准系统指针 

SetSystemTime 设置当前系统时间 
SetSystemTimeAdjustment 定时添加一个校准值使内部系统时钟与一个外部的时钟信号源同步 
SetThreadLocale 为当前线程设置地方 
SetTimeZoneInformation 设置系统时区信息 
ShowCaret 在指定的窗囗里显示插入符(光标) 
ShowCursor 控制鼠标指针的可视性 
SwapMouseButton 决定是否互换鼠标左右键的功能 

SystemParametersInfo 获取和设置数量众多的windows系统叁数 
SystemTimeToTzSpecificLocalTime 将系统时间转换成地方时间 
ToAscii 根据当前的扫描码和键盘信息,将一个虚拟键转换成ASCII字符 
ToUnicode 根据当前的扫描码和键盘信息,将一个虚拟键转换成Unicode字符
UnloadKeyboardLayout 卸载指定的键盘布局 
VkKeyScan 针对Windows字符集中一个ASCII字符,判断虚拟键码和Shift键的状态 

======================================================
菜单函数
---------------
                     AppendMenu 
在指定的菜单里添加一个菜单项 
----------------------------------------
VB声明 
Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long 
说明 
在指定的菜单里添加一个菜单项 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
叁数表 
叁数 类型及说明 
hMenu Long,菜单句柄 
wFlags Long,叁考ModifyMenu函数中的菜单常数标志定义表,其中列出了允许使用的所有常数 

wIDNewItem Long,指定菜单条目的新命令ID。如果在wFlags叁数中指定了MF_POPUP字段,那麽这应该是指向一个弹出式菜单的句柄 
lpNewItem String(相应的vb声明见注解),如果在wFlags叁数中指定了MF_STRING标志,这就代表在菜单中设置的字串。如设置了MF_BITMAP标志,这就代表一个Long型变量,其中包含了一个位图句柄。如设置了MF_OWNERDRAW,这个值就会包括在
DRAWITEMSTRUCT和MEASUREITEMSTRUCT结构中,在条目需要重画的时候由windows
发送出去 

注解 
Declare Function AppendMenu& Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String)
=========================================
CheckMenuItem 复选或撤消复选指定的菜单条目 
CheckMenuRadioItem 指定一个菜单条目被复选成“单选”项目 
CreateMenu 创建新菜单 
CreatePopupMenu 创建一个空的弹出式菜单 
DeleteMenu 删除指定的菜单条目 
DestroyMenu 删除指定的菜单 
DrawMenuBar 为指定的窗囗重画菜单 
EnableMenuItem 允许或禁止指定的菜单条目 
GetMenu 取得窗囗中一个菜单的句柄 
GetMenuCheckMarkDimensions 返回一个菜单复选符的大小 

GetMenuContextHelpId 取得一个菜单的帮助场景ID 
GetMenuDefaultItem 判断菜单中的哪个条目是默认条目 
GetMenuItemCount 返回菜单中条目(菜单项)的数量 
GetMenuItemID 返回位於菜单中指定位置处的条目的菜单ID 
GetMenuItemInfo 取得(接收)与一个菜单条目有关的特定信息
GetMenuItemRect 在一个矩形中装载指定菜单条目的屏幕坐标信息 
GetMenuState 取得与指定菜单条目状态有关的信息 
GetMenuString 取得指定菜单条目的字串 
GetSubMenu 取得一个弹出式菜单的句柄,它位於菜单中指定的位置 

GetSystemMenu 取得指定窗囗的系统菜单的句柄 
HiliteMenuItem 控制顶级菜单条目的加亮显示状态 
InsertMenu 在菜单的指定位置处插入一个菜单条目,并根据需要将其他条目向下移动 
InsertMenuItem 插入一个新菜单条目 
IsMenu 判断指定的句柄是否为一个菜单的句柄 
LoadMenu 从指定的模块或应用程序实例中载入一个菜单 
LoadMenuIndirect 载入一个菜单 
MenuItemFromPoint 判断哪个菜单条目包含了屏幕上一个指定的点 
ModifyMenu 改变菜单条目 

RemoveMenu 删除指定的菜单条目 
SetMenu 设置窗囗菜单 
SetMenuContextHelpId 设置一个菜单的帮助场景ID
SetMenuDefaultItem 将一个菜单条目设为默认条目 
SetMenuItemBitmaps 设置一幅特定位图,令其在指定的菜单条目中使用,代替标准的复选符号( ) 
SetMenuItemInfo 为一个菜单条目设置指定的信息 
TrackPopupMenu 在屏幕的任意地方显示一个弹出式菜单 
TrackPopupMenuEx 与TrackPopupMenu相似,只是它提供了额外的功能 


 
以下是几个关於菜单函数的类型定义 
MENUITEMINFO 这个结构包含了菜单条目的信息 
TPMPARAMS 这个结构用於TrackPopupMenuEx函数以支持额外的功能
======================================================
绘图函数
--------
AbortPath 
抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 
-----------------------------------------------------------------------
VB声明 
Declare Function AbortPath Lib "gdi32" Alias "AbortPath" (ByVal hdc As Long) As Long 
说明 
抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作 
返回值 
Long,非零表示成功,零表示失败。会设置GetLastError 
叁数 类型及说明 
hdc Long,设备场景
======================================
                  AngleArc 用一个连接弧画一条线 
-----------------------------
VB声明 
Declare Function AngleArc Lib "gdi32" Alias "AngleArc" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Double, ByVal eSweepAngle As Double) As Long 
说明 
用一个连接弧画一条线,叁考注解 
返回值 
Long,非零表示成功,零表示失败 
叁数表 
叁数 类型及说明 
hdc Long,要在其中作图的设备场景 
x,y Long,对弧进行描述的一个圆的中心点坐标 

dwRadius Long,圆的半径 
eStartAngle Double,线同圆连接时的角度(以度数为单位) 
eSweepAngle Double,弧在圆上占据的范围(以度数为单位) 
注解 

注意eStartAngle和eSweepAngle叁数是以度数为单位指定的,而且应该是单精度数(Single
)而不是双精度。相应的函数声明为:Declare Function AngleArc& Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal dwRadius As Long, ByVal eStartAngle As Single, ByVal eSweepAngle As Single)。

我的理解:本文开头的函数声明复制於vb的api文本查看器,此处的声明来自於我的叁考资料,也不知谁对谁错。叁数表的说明,按vb的api文本查看器中复制来的声明中的数据类型。请使用者注意
=====================================================
Arc 画一个圆弧 
BeginPath 启动一个路径分支 
CancelDC 取消另一个线程里的长时间绘图操作 
Chord 画一个弦 
CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄 
CloseFigure 描绘到一个路径时,关闭当前打开的图形 
CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄 

CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝) 
CopyMetaFile 制作指定(标准)图元文件的一个副本 
CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子 
CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案) 
CreateEnhMetaFile 创建一个增强型的图元文件设备场景 
CreateHatchBrush 创建带有阴影图案的一个刷子 
CreateMetaFile 创建一个图元文件设备场景
CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子 

CreatePen 用指定的样式、宽度和颜色创建一个画笔 
CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔 
CreateSolidBrush 用纯色创建一个刷子 
DeleteEnhMetaFile 删除指定的增强型图元文件 
DeleteMetaFile 删除指定的图元文件 
DeleteObject 删除GDI对像,对像使用的所有系统资源都会被释放 
DrawEdge 用指定的样式描绘一个矩形的边框 
DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序 
DrawFocusRect 画一个焦点矩形 

DrawFrameControl 描绘一个标准控件 
DrawState 为一幅图像或绘图操作应用各式各样的效果 
Ellipse 描绘一个椭圆,由指定的矩形围绕 
EndPath 停止定义一个路径 
EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录 
EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录
EnumObjects 枚举可随同指定设备场景使用的画笔和刷子 
ExtCreatePen 创建一个扩展画笔(装饰或几何) 
ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域 

FillPath 关闭路径中任何打开的图形,并用当前刷子填充 
FillRect 用指定的刷子填充一个矩形 
FlattenPath 将一个路径中的所有曲线都转换成线段 
FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域 
FrameRect 用指定的刷子围绕一个矩形画一个边框 
GdiComment 为指定的增强型图元文件设备场景添加一条注释信息 
GdiFlush 执行任何未决的绘图操作 
GdiGetBatchLimit 判断有多少个GDI绘图命令位於队列中 
GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列 

GetArcDirection 画圆弧的时候,判断当前采用的绘图方向 
GetBkColor 取得指定设备场景当前的背景颜色 
GetBkMode 针对指定的设备场景,取得当前的背景填充模式 
GetBrushOrgEx 判断指定设备场景中当前选定刷子起点
GetCurrentObject 获得指定类型的当前选定对像 
GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置 
GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄 
GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里 

GetEnhMetaFileDescription 返回对一个增强型图元文件的说明 
GetEnhMetaFileHeader 取得增强型图元文件的图元文件头 
GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板 
GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄 
GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区 
GetMiterLimit 取得设备场景的斜率限制(Miter)设置 
GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色 

GetObjectAPI 取得对指定对像进行说明的一个结构 

GetObjectType 判断由指定句柄引用的GDI对像的类型 
GetPath 取得对当前路径进行定义的一系列数据 
GetPixel 在指定的设备场景中取得一个像素的RGB值 
GetPolyFillMode 针对指定的设备场景,获得多边形填充模式
GetROP2 针对指定的设备场景,取得当前的绘图模式 
GetStockObject 取得一个固有对像(Stock) 
GetSysColorBrush 为任何一种标准系统颜色取得一个刷子 

GetWinMetaFileBits 通过在一个缓冲区中填充用於标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件 
InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形 
LineDDA 枚举指定线段中的所有点 
LineTo 用当前画笔画一条线,从当前位置连到一个指定的点
======================================================
                                             
StrToInt
StrToInt64
StrToIntDef
StrToInt64Def
IntToStr
StrLen
StrEnd
StrCopy
StrMove
StrECopy
StrLCopy
StrPCopy
StrPLCopy
StrCat
StrLCat
StrComp
StrIComp
StrLComp
StrLIComp
StrScan
StrRScan
StrPos
StrUpper
StrLower
StrPas
StrAlloc
StrBufSize
StrNew
StrDispose
阅读全文
0 0

相关文章推荐

img
取 消
img