DEPHI数据类型转换.docx_第1页
DEPHI数据类型转换.docx_第2页
DEPHI数据类型转换.docx_第3页
DEPHI数据类型转换.docx_第4页
DEPHI数据类型转换.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

不同的类有不同的成员,一般子类的成员是在父类的成员的后面增加了新的成员,如果子类转为父类,那这些新增加的成员虽然还存在,但是就不可以访问得到了。如果父类转为子类,那可能导致不可预知的错误,因为某个成员的指针指向的地址根本就不是具有实际成员。类型的转换也有很多类的,有隐性的和显性的,一些专用的类型转换函数,会重新建立一个新类型目标对象,然后把就类型的数值移动过去,然后销毁旧对象。一些隐性的转换,对象本身没改变,就把指针类型换一了一下。用于取地址!最方便的用法:在调用Api的时候,举个例子:我们调用Api的时候,经常要用到pchar类型,而Pchar类型的内存管理是一个很头疼的事情。在使用时要先Getmem,最后还要freemem,如果用了就方便了。声明一个string类型的变量abc,然后在调用的时候使用abc就可以了。DateTimeToFileDate 将DELPHI的日期格式转换为DOS的日期式 DateTimeToStr将日期时间格式转换为字符串 DateTimeToString将日期时间格式转换为字符串 DateToStr将日期格式转换为字符串 FileDateToDateTime 将DOS的日期格式转换为DELPHI的日期格式 FloatToDecimal将浮点数转换为十进制数 FloatToStrF将浮点数转换为字符串 FloatToStr将浮点数转换为字符串 FloatToText将给定的浮点数转换为十进制数 FloatToTextFmt 将给定的浮点数转换为十进制数 IntToHex将整型数转换为十六进制数 IntToStr将整型数转换为字符串 StringToWideChar 将ANSI字符串转换为UNICODE字符串 StrToDate 函数 将字符串转换为日期格式 StrToDateTime 函数 将字符串转换为日期/时间格式 StrToFloat 函数 将给定的字符串转换为浮点数 StrToInt 函数 将字符串转换为整型 StrToIntDef 函数 将字符串转换为整型或默认值 StrToTime 函数 将字符串转换为时间格式 TextToFloat 函数 将字符串(以NULL结束的格式)转换为浮点数 TimeToStr函数 将时间格式转换为字符串 VarToDateTime 函数 将给定的变体转换为日期时间 WideCharLenToString函数 将ANSI字符串转换为UNICODE字符串 WideCharToString 函数 将UNICODE字符串转换为ANSI字符串 WideCharToStrVar 函数 将UNICODE字符串转换为ANSI字符串变量procedure GetMem(var P: Pointer; Size: Integer); /分配动态内存 function StrPas(const Str: PChar): string; /将PChar转换为Stringdelphi数据类型转换函数在我们编写程序当中,根据不同情况,会使用到多种数据类型。当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型。因此熟练地掌握数据类型的转换是非常重要的。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(好)这样的类型,因为他们并不存在数字型。4.2 StrToIntdef(字符,数字)功能说明:返回字符串S转换成整数说明 字符串非整数表达时则返回默认值Default参考实例:SpinEdit1.Value := StrToIntDef(Edit1.Text, 0);注意:当Edit1.Text转换成非整数表达时,则返回默认值0。5.StrToFloat功能说明:该函数用于将“字符型”转换成“浮点型”。参考实例:N := StrToFloat(Edit1.Text);注意:Edit1.Text中的内容为1.981(凡在Edit控件中显示的文本均为字符串)。N为Double类型,用于保存转换后的浮点型数据。DateTimeToFileDate 函数 将DELPHI的日期格式转换为DOS的日期格式DateTimeToStr 函数 将日期时间格式转换为字符串DateTimeToString 函数 将日期时间格式转换为字符串DateToStr 函数 将日期格式转换为字符串FileDateToDateTime 函数 将DOS的日期格式转换为DELPHI的日期格式FloatToDecimal 函数 将浮点数转换为十进制数FloatToStrF 函数 将浮点数转换为字符串FloatToStr 函数 将浮点数转换为字符串FloatToText 函数 将给定的浮点数转换为十进制数FloatToTextFmt 函数 将给定的浮点数转换为十进制数IntToHex 将整型数转换为十六进制数IntToStr 将整型数转换为字符串StringToWideChar 函数 将ANSI字符串转换为UNICODE字符串StrToDate 函数 将字符串转换为日期格式StrToDateTime 函数 将字符串转换为日期/时间格式StrToFloat 函数 将给定的字符串转换为浮点数StrToInt 函数 将字符串转换为整型StrToIntDef 函数 将字符串转换为整型或默认值StrToTime 函数 将字符串转换为时间格式TextToFloat 函数 将字符串(以NULL结束的格式)转换为浮点数TimeToStr 函数 将时间格式转换为字符串VarToDateTime 函数 将给定的变体转换为日期时间WideCharLenToString 函数 将ANSI字符串转换为UNICODE字符串WideCharToString 函数 将UNICODE字符串转换为ANSI字符串WideCharToStrVar 函数 将UNICODE字符串转换为ANSI字符串一、数的类型转换把表达式的类型从一种类型转化为另一种类型,结果值是把原始值截断或扩展,符号位保持不变。例如:数的类型转换 举例字符转换为整数 Integer(A)整数转换为字符 Char(48)整数转换为1个字节的逻辑型 Boolean(0)整数转换为2个字节的逻辑型 WordBool(0)整数转换为4个字节的逻辑型 LongBool(0)整数转换为10进制pascal型字符串 caption:=intToStr(15)整数转换为16进制pascal型4位字符串 caption:=intToHex(15,4)地址转换为长整型数 Longint(Buffer)二、数的“分开”与“合成”取32位longint型数的 高16位数为 hiword(longintvar)低16位数为 loword(longintvar)取16位数的 高8位数为 hibyte(integer_var)低8位数为 lobyte(integer_var)取32位地址的段选择符和偏移量 段选择符(高16位地址)为 selectorof(p)偏移量(低16位地址)为 offsetof(p)段选择符和偏移量合成为指针 Ptr(SEG, OFS: Word)相当于C语言的宏MKFP(SEG,OFS)例如在Windows中,Task DataBase结构0FAh偏移处包含TD标识,我们可以容易地编写如下代码观察到这个位于Windows内部的未公开的秘密:函数ptr(seg,ofs)的用法,相当于C语言的MKFP(seg,ofs)var p:pbyte;ch:char;p:=ptr(getcurrentTask,FA);ch:=char(p); 结果为ch=Tp:=ptr(getcurrentTask,FA+1);ch:=char(p); 结果为ch=D三、字符串string 字符数组与指向字符串的指针pchar的区别与联系这3者的基本概念相同,但有一些非常细微的差别,在编程时稍不注意就会出错,需高度重视。1、使用指向字符串的指针,如果不是以0结尾,运行时就会出现错误。为了避免这种错误,需要在字符串结尾人工加入0 即char(0),或用strpcopy函数在字符串结尾自动加0。例1: 指向字符串的指针,如果不是以0结尾,运行时会出现错误:s0=3 s1=n s2=e s3=wvars:string; p:pchar;begins:=new; label1.caption:=s; new label2.caption:=intTostr(integer(s0);3是字符串的长度p:=s1;不是以0结尾,莫用pchar型指针 label3.caption:=strpas(p); 运行时出现错误end;例2:在字符串结尾人工加入0即char(0),可使用指向字符串的指针。s0=4 s1=n s2=e s3=w s4=0;pnewvar s:string; p:pchar;beginp:=s1;s:=new+char(0); 以0结尾,可用pchar型指针label1.caption:=strpas(p); newlabel2.caption:=s; new label3.caption:=intTostr(integer(s0); 4是字符串长度end;例3: 用strpcopy函数赋值会在字符串s结尾自动加0。s0=4 s1=n s2=e s3=w s4=0;pnewvar s:string; p:pchar;beginp:=s1; strpcopy(p,new);strpcopy函数在字符串结尾自动加0label1.caption:=strpas(p);new label2.caption:=s;newlabel3.caption:=intTostr(integer(s0);4end;2、下标为0的字符串标识符存放的是字符串长度,字符型数组基本相当于字符串,但不能存放字符串长度。字符串可以用s:=a string的形式赋值,但是字符型数组a 不可直接用a:=array的形式赋值,用此种形式会出现类型不匹配错误,可选用strpcopy函数赋值。例4: 字符型数组s 相当于字符串,但没有存放字符串长度的位置。s1=n s2=e s3=w s4=0;pnewvars:array1.10 of char;p:pchar;begins:=new+char(0); error错误p:=s1;p:=s; is not correctstrpcopy(p,new);label1.caption:=strpas(p);newlabel2.caption:=s;new label3.caption:=intTostr(integer(s0);不会出现4, 下标超出错误end;例5:下标从0开始的字符数组s,s相当于s0。 s0=n s1=e s2=w s3=0;pnewvars:array1.10 of char;p:pchar;begins:=new+char(0); error错误 p:=s;p:=s0 is also correctstrpcopy(p,new);label1.caption:=strpas(p);newlabel2.caption:=s;newlabel3.caption:=s0;nend;3、下标从0开始和从1开始的字符数组地址的表示方法也有细微不同:例6:下标从1开始的数组a 与下标从0开始的数组b 的比较。vara:array1.10of char;b:array0.10of char;begin strpcopy( b, from 0 to 10); 正确 因为b即是b0 strpcopy(b0, from 0 to 10); 正确 与上个表达式结果相同strpcopy(a1, from 1 to 10); 正确 strpcopy( a, from 1 to 10); 类型匹配错误 因为a即是a0end;000Delphi中关键字,优先法则,类型转换等相关Trunc 转换一个实型值为小数截断后的整型值Int 返回浮点数的整数部分IntToStr 将数值转换为字符串IntToHex 将数值转换为十六进制数字符串StrToInt 将字符串转换为一个整型数,如字符串不是一个合法的整型将引发异常StrToIntDef 将字符串转换为一个整数,如字符串不合法返回一个缺省值Val 将字符串转换为一个数字(传统Turbo Pascal例程用于向后兼容)Str 将数字转换为格式化字符串(传统Turbo Pascal例程用于向后兼容)StrPas 将零终止字符串转换为Pascal类型字符串,在32位Delphi中这种类型转换是自动进行的StrPCopy 拷贝一个Pascal类型字符串到一个零终止字符串, 在32位Delphi中这种类型转换是自动进行的StrPLCopy 拷贝Pascal类型字符串的一部分到一个零终止字符串FloatToDecimal 将一个浮点数转换为包含指数、数字及符号的十进制浮点记录类型FloatToStr 将浮点值转换为缺省格式的字符串FloatToStrF 将浮点值转换为特定格式的字符串FloatToText 使用特定格式,将一个浮点值拷贝到一个字符串缓冲区FloatToTextFmt 同上面例程,使用特定格式,将一个浮点值拷贝到一个字符串缓冲区StrToFloat 将一个Pascal字符串转换为浮点数TextToFloat 将一个零终止字符串转换为浮点数Dec 将例程中的参数值递减1或一个特定的值,其中特定值可在第二个可选参数中定义Inc 将例程中的参数值增加1或一个特定的值Odd 如果参数为奇数返回真Pred 根据参数在其数据类型定义中的序列,返回参数值的前驱值Succ 返回参数值的后继值Ord 返回参数值在其数据类型值集合中的序号Low 返回参数对应的有序数据类型的最小取值High 返回参数对应的有序数据类型的最大取值实数:SingleDoubleExtendedReal $REALCOMPATIBILITY ON据说不标准,要兼容旧的格式使用这个宏CompCurrencyTDateTime = type Double为了后续使用或直接用于变量,需要给自定义类型命名。如果自定义一个命名的类型,你必须将代码放在特定的type区,如下所示:最多的如定义类等。typeUppercase = A.Z;Temperatures = array 1.24 of Integer;Date = recordMonth: Byte;Day: Byte;Year: Integer;end;Colors = (Red, Yellow, Green, Cyan, Blue, Violet);Letters = set of Char;end;子界类型a.bab为有序类型枚举类型typeColors = (Red, Yellow, Green);/园括

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论