四、内存、指针操作函数
在编程中,动态数组为我们处理数据带来了很大的方便。Windows API函数也为增强程序的功能提供了强有力的保障。当我们在使用这些动态数组及API函数时,常常需要动态分配内存空间,这样动态数组才能被我们使用,API函数才能正确的返回结果。因此,这些函数是必不可少的。. 1.AllocMem
功能说明:分配内存空间并自动初始化为零。如果不需要初始化为零,可以使用GetMem代替AllocMem。. 参考实例:. var.
Buffer: PChar;. begin.
Buffer := AllocMem(256); // 分配大小为256个字节的内存空间. end;. 2.Dispose
功能说明:释放为指针分配的内存空间。. 参考实例:. var.
P: Pinteger; // 声明一个Integer(整型)指针. begin. New(P);. P^ := 100;.
Dispose(P) // 释放内存. end;. 3.FreeMem
功能说明:释放分配的内存空间。. 参考实例:. var.
Buffer: Pchar;. begin.
GetMem(Buffer, 256); // 分配大小为256个字节的内存空间。. FreeMem(Buffer); // 释放内存空间. end;. 4.GetMem
功能说明:分配内存空间。. 参考实例:. var.
Buffer: PChar;. begin.
GetMem(Buffer, 256); // 分配大小为256个字节的内存空间。. end;. 5.New
功能说明:为指针分配内存空间。. 参考实例:. var.
P: PInteger; // 声明一个Integer(整型)指针. begin.
New(P); // 分配内存. P^ := 100; // 赋值.
end;.
五、数算函数
我们在编写跟数学紧密相关的程序时,数算函数将大有用处。比如图像处理软件,就会大量用到这些数算函数。.
默认情况下,Delphi新建的工程里,没有包含大多数的数行函数,因此需要在Uses中加入Math单元。. 1.Abs
功能说明:求绝对值。. 参考实例:. var.
r: Single;. i: Integer;. begin.
r := Abs(-2.8); // r等于 2.8 . i := Abs(-156); // I 等于 156. end;. 2.Exp
功能说明:Exp返回e的X次幂的值,其中e是一个自然对数基底。. 参考实例:.
e := Exp(1.0); // e为real型变量. end;. 3.Floor
功能说明:取得小于等于X的最大的整数。. 参考实例:.
Floor(-2.8) = -3. Floor(2.8) = 2. Floor(-1.0) = -1. 4.Int
功能说明:返回参数中的整数部分。. 参考实例:. var . R: Real;. begin.
R := Int(123.456); // R等于 123.0. R := Int(-123.456); // R等于 -123.0. end;.
5.Max(所在单元:Math)
功能说明:比较两个数字,并返回最大的一个数字。. 参考实例:. var.
k: Integer;. begin.
k := Max(10, 20); // k将为20. end;.
6.Min(所在单元:Math)
功能说明:比较两个数字,并返回最小的一个数字。. 参考实例:. var.
k: Integer;. begin.
k := Min(10, 20); // k将为10. end;. 7.PI
功能说明:精确计算返回圆周率。. 参考实例:. var.
x Extended;. begin.
x := PI; // x等于3.14159265357932385. end;. 8.Round
功能说明:对一个实数进行四舍五入。. 参考实例:. var.
I, j: Integer;. begin.
i := Round(1.25); // i等于1. j := Round(1.62); // j等于2 . end;. 9.Sqr
功能说明:取给定值的平方。. 参考实例:.
var.
i: Integer;. begin.
i := Sqr(3); // i等于9. end;. 六、日期函数
对日期的处理,一般在有日期的共享、商业软件中经常使用到。如果你打算编写一款有日期的软件,熟悉使用下面的函数即可以实现。. 1.Date
功能说明:返回当前的日期。. 参考实例:.
procedure TForm1.Button1Click(Sender: TObject);. begin.
Label1.Caption := ''今天是:'' + DateToStr(Date);. end;.
Label显示为:今天是2005年1月1日。. 2.DateToStr
功能说明:将日期型转换为字符型。. 参考实例:. var.
S: String;. begin.
S := DateToStr(Date);. end;.
3.DateTimeToStr
功能说明:将DateTime型转换为字符型。. 参考实例:. var.
S: String;. begin.
S := DateTimeToStr(Now);. end;.
4.DayOfTheMonth(所在单元:DateUtils) 功能说明:获取指定日期的日。. 参考实例:.
Label1.Caption := IntToStr(DayOfTheMonth(Now));. 假设当前日期为2005年1月2日,那么Label将显示为2。. 5.DayOfTheWeek(所在单元:DateUtils) 功能说明:根据指定日期,获取星期几。. 参考实例:.
Label1.Caption := IntToStr(DayOfTheMonth(Now));.
假设当前日期为2005年1月2日,那么Label将显示为7。根据返回的值来判断是周几。7表示星期天,1为星期一,依类类推。. 6.DayOfTheYear(所在单元:DateUtils) 功能说明:根据指定日期,获取天数。. 参考实例:.
Label1.Caption := IntToStr(DayOfTheYear(Now));.
假设当前日期为2005年1月2日,那么Label将显示为2。表示是2005年的第2天。.
7.DayOf(所在单元:DateUtils) 功能说明:根据指定的日期,返回日。. 参考实例:.
Label1.Caption := IntToStr(DayOf(Date));.
假设当前日期为2005年1月2日,那么Label将显示为2。. 8.IsLeapYear
功能说明:根据指定的年,判断是否为闰年。可使用YearOf函数获取年。. 参考实例:.
procedure TForm1.Button1Click(Sender: TObject);. begin.
if IsLeapYear(YearOf(Date)) then ShowMessage(''是闰年''). else ShowMessage(''不是闰年'');. end;.
9.MonthOf(所在单元:DateUtils) 功能说明:根据指定的日期,返回月份。. 参考实例:.
Label1.Caption := IntToStr(MonthOf(Date));.
假设当前日期为2005年1月2日,那么Label将显示为1。. 10.Now
功能说明:返回当前日期及时间。. 参考实例:.
procedure TForm1.Button1Click(Sender: TObject);.
begin.
Label1.Caption := ''现在是:'' + DateTimeToStr(Now);. end;.
11.YearOf(所在单元:DateUtils) 功能说明:根据指定的日期,返回年。. 参考实例:.
Label1.Caption := IntToStr(YearOf(Date));.
假设当前日期为2005年1月2日,那么Label将显示为2005。.