您的当前位置:首页正文

Delphi类型转换

2024-06-25 来源:九壹网


Delphi类型转换

Chr 将一个有序数据转换为一个ANSI字符 Ord 将一个有序类型值转换为它的序号

Round 转换一个实型值为四舍五入后的整型值 Trunc 转换一个实型值为小数截断后的整型值 Int 返回浮点数的整数部分 IntToStr 将数值转换为字符串

IntToHex 将数值转换为十六进制数字符串

StrToInt 将字符串转换为一个整型数,如字符串不是一个合法的整型将引发异常 StrToIntDef 将字符串转换为一个整数,如字符串不合法返回一个缺省值 Val 将字符串转换为一个数字(传统Turbo Pascal例程用于向后兼容) Str 将数字转换为格式化字符串(传统Turbo Pascal例程用于向后兼容) StrPas 将零终止字符串转换为Pascal类型字符串,在32位Delphi中这种类型转换是自动进行的

StrPCopy 拷贝一个Pascal类型字符串到一个零终止字符串, 在32位Delphi中这种类型转换是自动进行的

StrPLCopy 拷贝Pascal类型字符串的一部分到一个零终止字符串

Delphi 7.0常用函数由一句或多句代码组成,可以实现某个特定的功能。使用函数可以使代码更加易读、易懂,加快编程速度及减少重复代码。过程与函数类似,过程与函数最重要的区别在于,过程没有返回值,而函数能有返回值。

在Delphi 7.0中,已为我们定义好了非常多的函数,大致分类有6种:数据类型转换函数、字符串、数组操作函数、文件、磁盘操作函数、内存、指针操作函数、数学运算函数、日期函数。

在Delphi中调用函数,一般情况下可以直接使用函数即可,但由于有一些函数未包含在Uses中列出的单元中(默认单元有 Windows,Messages,SysUtils,Variants,Classes,Graphics, Controls,Forms,Dialogs,所以需要我们手动添加单元。比如,MidStr函数就未包含在这些单元中,MidStr所属单元在 StrUtils中,因此我们将StrUtils添加Uses中即可。

在本手册中,凡是未包含在默认列出的单元中的函数,都标明了其所属的单元,使用时应当注意。

一、数据类型转换函数

在我们编写程序当中,根据不同情况,会使用到多种数据类型。当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型。因此熟练地掌握数据类型的转换是非常重要的。

1.FloatToStr

功能说明:该函数用于将“浮点型”转换成“字符型”。 参考实例:Edit1.Text := FloatToStr(1.981);

2.IntToStr

功能说明:该函数用于将“整数型”转换成“字符型”。 参考实例:S := IntToStr(10);(注:S为String类型变量。)

3.IntToHex

功能说明:该函数用于将“十进制”转换成“十进制”。该函数有二个参数。第一个参数为要转换的十进制数据,第二个参数是指定使用多少位来显示十六进制数据。 参考实例:Edit1.Text := IntToHex('100', 2); 执行结果,Edit1.Text等于64。

注意:Delphi没有提供专门的“十六进制”转换为“十进制”的函数。使用StrToInt函数可以实现这个功能。具体代码是:I := StrToInt('S\\' + '64'); 这时I等于100。加上一个'S\\'即可将“十六进制”转换为“十进制”。

4.StrToInt

功能说明:该函数用于将“字符型”转换成“整数型”。 参考实例:I := StrToInt('100');

注意:不能转换如 StrToInt('ab')或StrToInt('好')这样的类型,因为他们并不存在数字型。

5.StrToFloat

功能说明:该函数用于将“字符型”转换成“浮点型”。 参考实例:N := StrToFloat(Edit1.Text); 注意:Edit1.Text中的内容为1.981(凡在Edit控件中显示的文本均为字符串)。N为Double类型,用于保存转换后的浮点型数据。

// 保存新的字符串 begin

S := 'I Love China!'; //下面将获取I Love China中的“Love”字符串。 MyStr := Copy(S, 3, 4); end;

执行结果,MyStr等于“Love”,“Love”字符串在“I begin

S1 := Concat('A', 'B'); // 连接两个字符串,S1变量等于AB。 S2 := Concat('Borland', ' Delphi', ' 7.0'); // 连接三个字符,S2变量等于Borland Delphi 7.0。 end; begin

S := 'I Like Reading CPCW.'; // 下面的代码将删除S变量中的“C”字符。 Delete(S, 16, 1); end;

此时S变量则是I

begin

i := High(arrText); // i的值则为9 end; begin

S := 'Wat is your name?';

// 上面句子中的What单词查一个“h”字符,下面使用Insert函数将h添加进去。

Insert('h', S, 2); // 将“h”从第2位处插入。 end; 6.LeftStr begin

S := 'MSN Messenger';

A := LeftStr(S, 3); // 从最左边开始,获取左边的三个字符。因此A变量则等于MSN。 end;

// 用于保存字符串长度 begin

nLen1 := Length('CPCW'); nLen2 := Length('电脑报'); end;

执行结果,nLen1等于4,nLen2等于6。由于一个汉字相当于两个字符的长度,所以3个汉字的长度为6。

begin

i:= High(arrText); // i的值则为1 end; begin

S := 'ABC';

A := UpperCase(S); // 经过UpperCase函数转换后,A则等于abc。 end; 10.MidStr

begin

S := MidStr('China', 1, 2); // S变量为Ch H := MidStr('电脑报', 1, 1); // H变量为“电”。如果使用Copy函数,则应是H := Copy('电脑报, 1, 2),否则返回的将不是“电”字。因此在使用操作含有中文的字符串时,最好使用MidStr。 end;

// 用于保存查找的字符所在位置 begin

nPos := Pos('Like', 'I Like Reading!'); end;

此时nPos等于3。如果没有查找到,则nPos为0。

注意:Pos函数在查找时是要区分字符大小的。如果要实现不区分大小,那么需要使用UpperCase或LowerCase函数将两个参数的字符(串)转换为“大写”或“小写”再进行查找。 另外还有一个查找字符(串)的函数----AnsiPos,该函数的使用方法与Pos函数完全一样。当你查找的是汉字时,最好使用AnsiPos函数。 12.RightStr begin

S := 'MSN Messenger';

A := RightStr(S, 3); // 从最右边开始,获取右边的三个字符。因此A变量则等于ger。 end;

// 定义一个动态数组 begin

SetLength(S, 10); // 当设置后,S变量只能赋值长度为10的字符串。 SetLength(arrText, 10); // 这里声明了长度为256的Char型数组 begin

StrPCopy(arrChar, 'Come on, baby!'); end; begin

S := ' Delphi 7.0 '; S := Trim(S); end; 16.TrimLeft

功能说明:删除字符串左边的空格(无论左边有多少个空格均被全部删除)。 参考实例:S := TrimLeft(' Delphi');

17.TrimRight

功能说明:删除字符串左边的空格(无论左边有多少个空格均被全部删除)。 参考实例:S := TrimRight('Delphi ');

begin

S := 'abc';

A := UpperCase(S); // 经过UpperCase函数转换后,A则等于ABC。 end;

begin

S := 'This is a book.';

AssignFile(F, // 以追加的方式打开文件

Writeln(F, S); // 将S变量中的内容追加到文本尾后。 CloseFile(F); // 关闭文件 end; begin

sDir :=

ChDir(sDir);

begin

AssignFile(F, // 打开文件

while not EOF(F) do begin // 使用While循环,一直判断是否到了文件未尾 Readln(F, S); // 读取一行文本

AllText := AllText + S; end;

CloseFile(F); // 关闭文件 end; // 用于保存删除状态 begin

IsOK := // 函数执着后,将结果返回给IsOK变量。如果IsOK变量为True,则表示文件删除成功。

if IsOK then ShowMessage('文件删除成功!') else ShowMessage('文件删除失败!'); end; begin

IsExists :=

if IsExists then ShowMessage('Windows文件夹存在!') else ShowMessage('Windows文件夹不存在!'); end; begin

FreeSize := DiskFree(3); // 获取C盘中的剩余空间。返回的值是以“字节”为单位的。 end; begin

DiskSize:= DiskSize(3); // 获取C盘的空间。返回的值是以“字节”为单位的。 end;

begin

AssignFile(F, // 打开文件

while not EOF(F) do begin // 使用While循环,一直判断是否到了文件未尾 Readln(F, S); // 读取一行文本 AllText := AllText + S; end; end; begin

AssignFile(F, // 打开文件 CloseFile(F); // 关闭文件

Erase(F); // 删除文件。在删除文件之前必须先关闭文件。 end; begin

IsExists :=

if IsExists then ShowMessage('该文件存在!') else ShowMessage('该文件不存在!'); end;

begin

AssignFile(F, // 打开文件 nSize := FileSize(F); // 获取文件大小。

CloseFile(F); // 关闭文件

end; 这样将不能成功创建MyFolder文件夹。 // 打开文件

end; // 打开文件。如果文件不存在,将会在C盘中创建MyFile.txt文件。如果文件存在,将会覆盖MyFile.txt中的所有内容。 end;

begin

AssignFile(F, // 打开文件

Readln(F, S); // 读取一行文本到S变量中 end; begin

AssignFile(F, // 更名为NewFile.txt end;

begin

S := 'This is a book.';

AssignFile(F, // 创建新文件

Writeln(F, S); // 将S变量中的内容写入文本中。 end; begin

Buffer := AllocMem(256); // 分配大小为256个字节的内存空间 end; // 声明一个Integer(整型)指针 begin

New(P); P^ := 100;

Dispose(P) // 释放内存 end; begin

GetMem(Buffer, 256); // 分配大小为256个字节的内存空间。 FreeMem(Buffer); // 释放内存空间 end; begin

GetMem(Buffer, 256); // 分配大小为256个字节的内存空间。 end; // 声明一个Integer(整型)指针 begin

New(P); // 分配内存 P^ := 100; // 赋值 end;

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) = begin

R := Int(123.456); // R等于 123.0 R := Int(-123.456); // R等于 -123.0 end;

5.Max begin

k := Max(10, 20); // k将为20 end;

6.Min (所在单元:Math)

因篇幅问题不能全部显示,请点此查看更多更全内容