鱼C论坛

 找回密码
 立即注册
查看: 3493|回复: 11

[技术交流] PChar与String的区别及互相转换

[复制链接]
发表于 2013-7-5 21:34:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来自Delphi Help 关键字String to PChar conversions

String转换到PChar不是自动的,他们之间的不同点导致他们的转换存在问题。
1. String是引用计数的,而PChar不是
2. 赋值给String是数据的拷贝,而PChar是指向数据的指针。
3. String是空止符结尾(空止符结尾指以#0结尾),并包含有字符串的长度。而PChar是简单的NULL结尾。

把PChar转换为String可用StrPas(PChar),把String转换为PChar可用PChar(String)

1. String(又叫LongString、AnsiString)是Delphi编译器内在支持的(predefined or built-in),是Delphi的一个基本数据类型,而PChar只是一个指向零终止字符串的指针;

2. String所存字符串是在堆(Heap)分配内存的,String 变量实际上是指向零终止字符串的指针,与此同时它还具有引用计数(reference count)功能,并且自身保存字符串长度,当引用计数为零时,自动释放所占用的空间。

3. 将String赋值给另一个String,只是一个简单的指针赋值,不产生copy动作,只是增加String的引用计数;

4. 将一个PChar变量类型赋值给一个String变量类型会产生真正的Copy动作,即将PChar所指向的字符串整个copy到为String分配的内存中;

5. 将String赋值给一个PChar变量类型,只是简单地将String的指针值赋值给PChar变量类型,而String
的引用计数并不因此操作而发生变化,因为这种情况PChar会对String产生依赖,当String 的引用计数为零自动释放内存空间后,PChar很可能指向一个无效的内存地址,在你的程序你必须小心对付这种情况。

6. 对PChar的操作速度要远远高于对String操作的速度,但PChar是一种落后的管理字符串的方式,而String则以高效的管理而胜出,PChar 它的存在只是为了兼容早期的类型和操作系统(调用 Windows API时会经常用到),建议平常使用String。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-9 22:33:26 | 显示全部楼层
没人沙发 就我来  站主  你的头像真的 好无聊哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-14 01:38:35 | 显示全部楼层
谢谢楼主分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-15 00:26:15 | 显示全部楼层
祝鱼C论坛红红火火!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-15 00:26:48 | 显示全部楼层
祝鱼C论坛红红火火!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-28 14:58:01 | 显示全部楼层
好文要顶
!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-28 14:58:39 | 显示全部楼层
再来个。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-3 10:09:08 | 显示全部楼层
就是因为小甲鱼;让我爱上了delphi的。感谢楼主的视频教程。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-7 19:32:24 | 显示全部楼层
谢谢楼主分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-11 13:21:21 | 显示全部楼层
总结得很到位,学习了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-25 21:47:50 | 显示全部楼层
做DLL才知道这玩意儿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-2 01:03:04 | 显示全部楼层
逛一逛,瞧一瞧,顶一顶,没坏处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 15:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表