问一个菜鸟问题,关于把地址转为int传递如何提取里面的值

对牛乱弹琴 2012-03-14 10:27:36

{
AnsiString str = "abc";
ShowMsg(int(&str));//ShowMsg函数要实现将"abc"显示出来,请问这个函数应该怎么写呢?
//而且我一定要传递int型地址
}


谢谢
...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蘑菇頭 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccrun 的回复:]

明白鸟,你可以这样:
PostMessage( , , ,(int)str.c_str()));

但是由于AnsiString类的.c_str()返回值不确定,容易AV,我建议用char数组中转一下,如:
C/C++ code
char *lp = new char[str.Length + 1];
strcpy(lp, str.c_str());
lp[str.Length] = ……
[/Quote]

+1
Jonix 2012-03-14
  • 打赏
  • 举报
回复
发消息?
好象是我经常干的事情嘛。。。

我一般放在一个类中一起传,可以多发点信息。
ccrun.com 2012-03-14
  • 打赏
  • 举报
回复
明白鸟,你可以这样:
PostMessage( , , ,(int)str.c_str()));

但是由于AnsiString类的.c_str()返回值不确定,容易AV,我建议用char数组中转一下,如:
char *lp = new char[str.Length + 1];
strcpy(lp, str.c_str());
lp[str.Length] = 0x0;

SendMessage( , , ,(LPARAM)lp);

delete []lp;


注意我这里用的是SendMessage,如果你执意要用PostMessage,那么lp的销毁工作,最好由接收者来执行。
对牛乱弹琴 2012-03-14
  • 打赏
  • 举报
回复
搞定,多谢各位
对牛乱弹琴 2012-03-14
  • 打赏
  • 举报
回复
我现在在尝试用WM_COPYDATA来传递,就是好奇心想知道上面的方法行不行呢,呵呵
对牛乱弹琴 2012-03-14
  • 打赏
  • 举报
回复
我想实现dll想exe发送消息,传递字符串,网上看有人用这个方法,就想试试看,行不行,嘿嘿

PostMessage( , , ,int(&str));//前面3个参数省略了

[Quote=引用 1 楼 ccrun 的回复:]

AnsiString是一个类,你取这个类实例的地址有什么意义呢?类实例的地址并不等于字符串的首地址。

你到底想实现啥?
[/Quote]
ccrun.com 2012-03-14
  • 打赏
  • 举报
回复
AnsiString是一个类,你取这个类实例的地址有什么意义呢?类实例的地址并不等于字符串的首地址。

你到底想实现啥?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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