说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi的类型转换

HTML文档下载 WORD文档下载 PDF文档下载
Delphi的类型转换

Delphi是一种强类型转换的语言。在VC中,赋值符用″=″

例如x=1;到了Delphi赋值符就变成了″:=″

例如x:=1。 从赋值时用符号″:=″而不用″=″

就隐约可见Delphi对类型匹配要求之严

即赋值符右边的类型一定要和左边一致。用惯了VB或VC的程序员

初用Delphi

稍不留神

就会出现类型不匹配的错误。对初学者而言

类型转换也是学习Delphi的重点和难点

为此本文特对Delphi的类型转换做一总结

以供读者参考。

一、数的类型转换

把表达式的类型从一种类型转化为另一种类型

结果值是把原始值截断或扩展

符号位保持不变。例如:

数的类型转换 举例

字符转换为整数 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(longint-var)

低16位数为 loword(longint-var)

取16位数的 高8位数为 hibyte(integer_var)

低8位数为 lobyte(integer_var)

取32位地址的段选择符和偏移量 段选择符(高16位地址)为 selectorof(p)

偏移量(低16位地址)为 offsetof(p)

段选择符和偏移量合成为指针   Ptr(SEG

OFS: Word)相当于C语言的宏MK-FP(SEG

OFS)

例如在Windows中

Task DataBase结构0FAh偏移处包含'TD'标识

我们可以容易地编写如下代码观察到这个位于Windows内部的未公开的秘密:

{函数ptr(seg

ofs)的用法

相当于C语言的MK-FP(seg

ofs)}

var p:pbyte;ch:char;

p:=ptr(getcurrentTask

$FA);

ch:=char(p^); {结果为ch='T'}

p:=ptr(getcurrentTask

$FA+1);

ch:=char(p^);   {结果为ch='D'}

三、字符串string 字符数组与指向字

符串的指针pchar的区别与联系

这3者的基本概念相同

但有一些非常细微的差别

在编程时稍不注意就会出错

需高度重视。

1、使用指向字符串的指针

如果不是以0结尾

运行时就会出现错误。为了避免这种错误

需要在字符串结尾人工加入0 即char(0)

或用strpcopy函数在字符串结尾自动加0。

例1: 指向字符串的指针

如果不是以0结尾

运行时会出现错误:

{s[0]=3 s[1]='n' s[2]='e' s[3]='w'}

var

s:string;

p:pchar;

begin

s:='new';

label1.caption:=s; {new}

label2.caption:=intTostr(integer(s[0]));{3是字符串的长度}

p:=@s[1];{不是以0结尾

莫用pchar型指针}

label3.caption:=strpas(p); {运行时出现错误}

end;

例2:在字符串结尾人工加入0即char(0)

可使用指向字符串的指针。

{s[0]=4 s[1]='n' s[2]='e' s[3]='w' s[4]=0;}

{p-->'new'}

var

s:string;

p:pchar;

begin

p:=@s[1];

s:='new'+char(0); {以0结尾

可用pchar型指针}

label1.caption:=strpas(p); {new}

label2.caption:=s; {new}

label3.caption:=intTostr(integer(s[0])); {4是字符串长度}

end;

例3: 用strpcopy函数赋值会在字符串s结尾自动加0。

{s[0]=4 s[1]='n' s[2]='e' s[3]='w' s[4]=0;}

{p-->'new'}

var

s:string;

p:pchar;

begin

p:=@s[1];

strpcopy(p

'new');{strpcopy函数在字符串结尾自动加0}

label1.caption:=strpas(p);{new}

label2.caption:=s;{new}

label3.caption:=intTostr(integer(s[0]));{4}

end;

2、下标为0的字符串标识符存放的是字符串长度

字符型数组基本相当于字符串

但不能存放字符串长度。字符串可以用s:='a string'的形式赋值

但是字符型数组a[ ]不可直接用a:='array'的形式赋值

用此种形式会出现类型不匹配错误

可选用strpcopy函数赋值。

例4: 字符型数组s[ ]相当于字符串

但没有存放字符串长度的位置。

{s[1]='n' s[2]='e' s[3]='w' s[4]=0;}

{p-->'new'}

var

s:array[1..10] of char;

p:pchar;

begin

{s:='new'+char(0); error}{错误}

p:=@s[1];

{p:=@s; is not correct}

strpcopy(p

'new');

label1.caption:=strpas(p);{new}

label2.caption:=s;{new}

{label3.caption:=intTostr(integer(s[0]));}{不会出现4

下标超出错误}

end;

例5:下标从0开始的字符数组s

s相当于@s[0]。

{ s[0]='n' s[1]='e' s[2]='w' s[3]=0;}{p-->'new'}

var

s:array[1..10] of char;

p:pchar;

begin

{s:='new'+char(0); error}{错误}

p:=s;

{p:=@s[0] is also correct}

strpcopy(p

'new');

label1.caption:=strpas(p);{new}

label2.caption:=s;{new}

label3.caption:=s[0];{n}

end;

3、下标从0开始和从1开始的字符数组地址的表示方法也有细微不同:

例6:下标从1开始的数组a 与下标从0开始的数组b 的比较。

var

a:array[1..10]of char;

b:array[0..10]of char;

{a:='1..10';}{type mismatch}

{b:='0..10';}{type mismatch}

begin

strpcopy( b

'from 0 to 10'); {正确 因为b即是@b[0] }

strpcopy(@b[0]

'from 0 to 10'); {正确 与上个表达式结果相同}

strpcopy(@a[1]

'from 1 to 10'); {正确 }

strpcopy( a

'from 1 to 10'); {类型匹配错误 因为a即是@a[0]}

end;

Bug报告:小角色,大用处! iOS开发者必备: 五大编程类工具 多核优化软件MCx释放EMC VNX闪存潜能 手把手教学:详解HTML5移动开发框架PhoneJS 快速学习新技术的几条建议 研发周报:Angular.js or Ember.js 谁将成为Web开发的新宠? 10款免费且开源的项目管理工具 Greg Pass:拯救Twitter的无名英雄 Cassandra杀回数据库排行Top 10,及需求Java 7的2.0版本 安全专家王清将揭秘“大数据时代的大安全” BrainSpace:跟传统搜索说再见 艾普网络的OpenStack实践 移动周报:无需编程,分秒钟DIY一个移动网站 抢占先机:豌豆荚发布视频搜索产品 Cloud-Connect大会Day1:OCP与SwiftStack 云智能手机,将会很快威胁到Android和iPhone? 直接拿来用!超实用的Java数组技巧攻略 腾讯云俱乐部上海站:电商如何利用云提高核心竞争力 iOS开发者必备:六大图片、图标处理类工具 腾讯向搜狗注资4.48亿美金持股36.5% 推荐五款流行的JavaScript模板引擎 为何人人都将成为程序员?看32位美国顶尖精英的说法! MySQL再度失势:继维基百科之后,Google也迁移到了MariaDB Werner Vogels:亚马逊热爱艺术的CTO Jolla宣布Sailfish OS兼容Android手机硬件和应用 为什么项目估算偏差如此之大? Cloud Connect大会Day2:开源与云数据中心 CTO俱乐部第110期下午茶:利用麦肯锡7S模型构建管理框架 跨平台打造移动原生应用的10大武器 iOS与Android本地数据库新选择:使用Objective-C和Java编写 Cloud Connect大会day3:Intel的大数据与Metacloud私有云 请问如何屏蔽F1查看帮助的功能? 高手请进,怎么监测到一个文件将被覆盖 能提供解码器么? 在tdi中,怎样获取封包ip头? 神啊!救救我吧!!!!(在线等待) 我看SARS危机 求助 我该怎么办??? 管理登陆问题解决?? 一个简单的问题,如何对字符串进行减操作? 谁用过struts,进来交流一下! 请大侠看看俺的小程序,哪里错了(关于不规则图形填充) delphi查询问题(急需) 急求:从硬盘安装windowsxp时电脑出显不能安装,找不到eula!如何解决? 系统分析员VS博士 C#连接Oracle? 关于<BASE> 那里有WebDB下载啊. 在ListCtrl里加类似Combo Box的东西,能实现吗? windows2000下vb的一个小问题~~ 如何把当前路径加入查找路径中?立即给分! 对选用不同的纸张大小,在预览中能看出效果吗? 请问怎么在PB6.0中实现Foxpro(*.dbf)的数据导入,到ASA库中 j2me里怎么才能实现图象的滤镜效果?waiting... CDbSet m_dbSet(NULL)在哪一步才能得到一个CDatabase对象的错针? 新手提问:“镜象”是什么意思 求教,如何配置使性能达到最佳,详情见文 怎样在广域网中提高传屏响应速度?帮帮忙!急啊. 在文件钩子当中如何判断是打开文件操作,还是创建文件操作 怎样在applet程序中显示一幅jpeg图片?该图片存在于c:\image\下。 去年12月是谁发的帖子“做项目经理难么” 关于图层拖拽的问题 我有一块硬盘,迈托4.3G,开格式化分时说错误设备或0磁道损坏,后来fdisk分区,启动无效 这是个什么错误啊~ 第一次做控件不明白 给点指点啊 急求:从硬盘安装windowsxp时电脑出显不能安装,找不到eula!如何解决? 不用的控件怎样从工程中删除? 怎样将一个表中的全部数据追加到别一个表的后面????在线 我做软件这些年 求scjd的模拟题 为什么我连续给一个socket send三次,socket一次就接收完了? 关于HTML代码不区分大小写? 大家看一下这个CListCtrl是啥回事?? Turbo c++3.0怎么使用? 《水园MSN俱乐部宗旨》 ODBC连接数据库的一个问题求教 如何让网页一打开就是全屏模式? 关于打印的问题 怎么彻底卸载linux啊!放分100 如何移动无模式窗体? 一个网络版软件的共享使用问题 在线等待!!! 做实验时虹吸管提前发生虹吸现象该怎么办? 产业组织结构、产业间及产业内部结构个指的是什么?有什么区别? 为什么说常温常压下,8克氧气含有4NA个电子?8克氧气在标况下才是0.25摩尔啊,怎么在常温常压下也是0.25摩尔?常温常压和标况不是不同的吗, 如何在墙上写字(打广告)?毛笔,墨水不行写一下蘸一下太麻烦,请给点建议吧 甲类低频放大器,其晶体管集电极接扬声器,发射极直接接地,基极只接一个负载电阻,那么这个负载电阻怎么确定?(三极管型号是3AX系列的) 为什么存在万有引力呢? 得了芥子怎么办 组织机构和组织结构的区别 万有引力存在?假设在一绝对真空中,有两静止物体,根据万有引力定律,两物体会受到相互作用力,从而产生加速度,最后碰撞,能量是不会凭空产生,但为什么凭空产生加速度,产生能量? 如何看到紫外线 组织结构与组织战略的区别 从21千克棉籽中能榨出5.1千克油.照这样计算,7千克棉籽能榨出多少千克油?如果要榨出12.75千克油需要棉籽多少千克?判断下面的量成什么比例?(1)电费的单价一定,用电量和电费总价.( )(2 电磁炉维修串联60瓦灯泡后开机检锅正常,放上锅后灯泡猛亮一下熄灭,便自动关机,重复上述还是一样曾经换过一次IGBT,重新更换了LM339,及驱动管S8550 S8050 有18V 5V 285V电压,各大电容也换过了,还 让秋千永远的不停地荡 需满足什么条件是关于物理的能量守恒定律 一种棉籽,每千克出油20分之7千克,200千克棉籽可出油多少千克? 混合物质中怎样萃取我们所需要的部分? 一道化学试剂鉴别的题!下列各物质的无色溶液,不用其它试剂即可鉴别的是!1 KOH Na2SO4 AlCl32 NaHCO3 Ba(OH) H2SO43 HCl NaAlO2 NaHSO44 Ca(OH) NaCO3 BaCl2A.12 B23 C134 D1241 KOH Na2SO4 AlCl32 NaHCO3 Ba(OH) H2SO43 HCl NaAlO2 NaH 司南为什么要做成勺子形? PH试纸上滴入NAcl,试纸变什么颜色 水解反应的方程式如何去写我就是不会写那个关于水解的方程式就是不会分析生成什么,而且反应后生成什么!(显酸星还是碱性) 谁了解干气密封和机械密封,我对此一点不懂,希望能得到详细的解说. 3/8"NPT FEMALE-FEMALE PIPE COUPING. HOCH2CH2NHCOCH2CH3的水解反应方程 万有引力为何存在? 四氟化四硼的空间构型 长期在高温条件下工作的钢材,会产生哪些组织劣化? 为什么存在万有引力? 《快乐酷宝》里哪台天文望远镜更好用? 判断四氟化硫(SF4)的分子空间构型?用VSEPR法判断四氟化硫(SF4)的分子空间构型时,LP不等于0,孤对电子位置有两种情况,用斥力最小原理怎么确定 中国木材产量是世界最多的吗? 《快乐酷宝》里的天文望远镜耐用吗? 灯泡L1“3v,3w”灯泡L2“3v,6w”并联在1.5v电源上,那个灯泡亮 电磁炉保险丝处接假负载(灯泡)开机,加热盘怎么弄 《快乐酷宝》里的天文望远镜,属于哪个品牌的? 灯泡给名牌比较哪个更亮这种题怎么算 L1“6v 6w” L2“3V 3W”并联在某电源上 哪个灯更亮,实际功率之比 在三角形中,已知sinA+sinC=psinB,p属于R且ac=1/4b方 若角B为锐角,p的范围 某厂漂白车间需22.4LSO2,化学兴趣小组同学依据化学方程式:Zn+2H2SO4(浓)=(加热)ZnSO4+SO2+2H2O计算后,`取65g锌粒与98%的浓硫酸(P=1.84g/cm^3)110ml,充分反应,锌全部溶解后,即将收集所得气体如数送至车间 试药有危险吗? 为什么光学显微镜的目镜通常都是15×? 地下水污染会对农业种植产生危害吗? dna羟基末端怎么念,3’端念什么?5‘端念什么? 地球对光是否存在万有引力? 《快乐酷宝》里的天文望远镜很不错,请问是国产品牌吗? 现在北京还有试药的吗? 电磁炉为什么是在保险串联灯泡在线盘并联灯泡还可以理解,但大家说在保险串联灯泡就不懂了,是代替保险还是串在电路里?我还是个学徒, ZN+2H2SO4=ZNSO4+SO2+2H2O 反应一段时间后还会生成什么气体 DNA羟基端是哪个,我怎么觉得是B在遗传病及刑侦破案中常需要对样品DNA进行分析,PCR技术能快速扩增DNA片段,在几个小时内复制出上百万份的DNA拷贝,有效地解决了因为样品中DNA含量太低而难以 电磁炉保险处串联1个灯泡,通电后 灯泡暗红 开机 灯泡稍微亮点 但不闪烁 《快乐酷宝》里上官绮罗用的天文望远镜哪里有卖? DNA或RNA中的磷酸含有几个羟基,为什么? 电磁炉一加热烧保险丝怎么修灯泡怎么带 Zn+H2SO4==ZnSO4+H2(气体符号比如Zn 有13g 即0.2mol 那么H2SO4是xmol 就是正好跟它反应的xmol 那么x=0.是=0.2吧. 这句话怎么理解,3'端不就是DNA的头吗,(含有羟基) 对于十字相乘法练习题系数不为一的题,如何一眼就看出分解成那两个数如6x²-x-1=(2x-1)(3x+1) 就知道分解成2和3,简略点, 怎样制取znso4? 端羟基聚丁二烯的红外谱图及其分析? 8g氧气所含电子数为多少摩尔错了,是多少个..lb牛人的答案很好,修改一下就能采用了 Zn经过化学变化得到ZnSO4是得电子还是失电子 共发射极放大器中,集电极电阻的作用是什么 常温常压下,3.5gCl2所含电子数?常温常压下,3.5gCl2所含电子数如何计算? 亲戚行凶 纽约华人母子五人被害德媒:窃听丑闻得教训 要像中俄一样变浙江温岭医院否认特警“抢尸”:伤心还杭州家政阿姨变身女土豪专骗单身男五旬女子拼凑出骗婚团队 8人相继被骗记者探访平壤地铁 装饰奢华乘客行色匆西班牙就美国涉嫌在西从事监听活动召见朝鲜向欧洲派足球留学生 为成为体育强华媒:揭秘核潜艇部队新海军战略呼之欲杭州规定60方以上新建住宅最少配一个杭州酝酿再度延长地铁末班时间 延长至浙江省委通报省级班子专题民主生活会情杭州彩虹快速路有望11月开通贵阳拆迁猫鼠游戏:白天拆晚上搭 与城中国反贪关键词:健全机制让群众敢举报贪官忏悔录:本来只想捞几万 接判决难美女童为父亲录庆生视频爆红网络【组图贝克汉姆超速再度载长子出车祸【组图】白宫说奥巴马对国家安全局有信心监听门让世界彻底放弃侥幸纽约股市三大股指28日涨跌不一家中没住人 用水却达40多吨山寨中文片名,差点毁了一部经典?老人被撞重伤 家属重金找证人“伊斯兰国”占领叙空军基地“太惊喜!我真的看到了蓝眼泪”报名周六孕妈讲座 资深专家教你轻松分朱芳雨新女友是富家女昼夜温差变大 疾病乘虚而入漳州中福在线惊喜不断手机可查宾馆针孔摄像头?会动的福州福建在南京推介 首届青运会疑因家庭纠纷 公公捅伤儿媳食物不耐受 与食物过敏有何不同为凑钱回家过年 医药公司司机侵吞货款好运博回家 共享人月两团圆“天价”制服 揭了信息公开的短没上选秀榜? NBA猜不透王哲林8月最后一周 一大波动画片袭来我省重金 招揽“全职外国专家”福鼎警方智取在逃人员
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘