String的奇怪问题 var s:string; p1,p2:pchar;begin s:='abcde'; p1:=pchar(s); p2:=pchar(@s[1]); showmessageFmt('%s(%d) %s(%d)',[p1,Integer(p1),p2,integer(p2)]);end;以前我一直以为pchar(s)和pchar(@s[1])是等效的,结果显示,p1,p2指向的地址并不一样!哪位高手知道的解释一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 之前就有类似的贴子讨论过,你可以搜索一下。前者直接取的是当前s的地址,后者则是强制复制s(如果之前S没有引用计数,则会被释放只保留新的内存)。 我以前解答过类似的问题:http://bbs.2ccc.com/topic.asp?topicid=337151 果然如你所说的,s[1]会重新分配内存,我把 p1:=pchar(s); p2:=pchar(@s[1]);改成 p2:=pchar(@s[1]); p1:=pchar(s);后,p1,p2都指向同一个地址了。结帖了 电力系统经验回顾(之一) ehlib可以实现显示这种数据表吗?如果不能用什么控件能实现? 帮忙看一下这个sql的公式 响应版主要求,不再潜水,散分!2~ 求delphi英文类的文章 我用VC写的DLL,用Delphi调用,出错,请教! 简单问题,轻松得分(60分) svchost.exe文件是什么东东,怎么我的电脑提示错误!! 哪位能比较详细的说明用ADO组件连接到SQL SERVER 2000(安装在本地盘)的过程吗?不胜感激~~~ 关于亿倍考勤机接口问题! SQLServer2005安装了SP2和SP3之后,查询一下子变得特别慢 关于Tstrings是问题
前者直接取的是当前s的地址,后者则是强制复制s(如果之前S没有引用计数,则会被释放只保留新的内存)。
http://bbs.2ccc.com/topic.asp?topicid=337151
p1:=pchar(s);
p2:=pchar(@s[1]);
改成
p2:=pchar(@s[1]);
p1:=pchar(s);
后,p1,p2都指向同一个地址了。结帖了