为什么结果不相同,两个字符串?

walkmangood 2011-08-01 10:01:47
大家看下面的语句,为什么结果不相同呢?


edit2.Text:='AABB3322';


if pchar(edit2.Text)<>pchar('AABB3322') then
showmessage('不相同')
else
showmessage('相同');

显示的是“不相同”,谁给解答一下。
...全文
115 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
walkmangood 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 richardi 的回复:]
pchar是指向CHAR型的指针 ,你用 pchar(edit2.Text)<>pchar('AABB3322')实际上比较的是2个指针,不是指针指向的值,虽然2个指针的值相同,但是他们指向的位置不同,所以你怎么比都不相同。看下面测试把地址显示出来就清楚了

procedure TForm1.btn1Click(Sender: TObject);
var p1,p2:Pointer;
be……
[/Quote]

谢谢耐心解答,:)
richardi 2011-08-01
  • 打赏
  • 举报
回复
pchar是指向CHAR型的指针 ,你用 pchar(edit2.Text)<>pchar('AABB3322')实际上比较的是2个指针,不是指针指向的值,虽然2个指针的值相同,但是他们指向的位置不同,所以你怎么比都不相同。看下面测试把地址显示出来就清楚了

procedure TForm1.btn1Click(Sender: TObject);
var p1,p2:Pointer;
begin
edit2.Text:='AABB3322';
p1:=pchar(edit2.Text);
p2:=pchar('AABB3322');
ShowMessage(IntToStr(Integer(p1))+' '+IntToStr(Integer(p2)));
end;
linghengmao 2011-08-01
  • 打赏
  • 举报
回复
樓上正解
风之谷 2011-08-01
  • 打赏
  • 举报
回复
PCHAR()是 个指针, = <>号 在对指针进行比较时 是比较指针地址是否一致,

五哥 2011-08-01
  • 打赏
  • 举报
回复
pchar 是指针 ,应该是这个的原因
yqdragon 2011-08-01
  • 打赏
  • 举报
回复
pchar是指针,指向不一样
曼尼叔叔 2011-08-01
  • 打赏
  • 举报
回复
if pchar(edit2.Text)<>pchar('AABB3322') then

edit2.text和'AABB3322'各自占用这一块内存,那么两个指针指向的地址肯定就不一样了
walkmangood 2011-08-01
  • 打赏
  • 举报
回复
edit2.Text:='AABB3322';


if pchar(edit2.Text)<>'AABB3322' then
showmessage('不相同')
else
showmessage('相同');

但是去掉pchar这样就相同了
纯冰糖 2011-08-01
  • 打赏
  • 举报
回复
pchar是以Null结束的字符串指针
林石公 2011-08-01
  • 打赏
  • 举报
回复
估计是成了比较两个指针了,所以不同
纯冰糖 2011-08-01
  • 打赏
  • 举报
回复
内存中存储形式不同

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧