为什么我的treeview添加了node->Data=33619969用AnsiString((char*)(MainFrm->TreeView1->Selected->Data))读出来的为33619969_呢?

iris_zhu 2003-12-12 01:34:51
我的树中添加data的代码为
AnsiString *temp;
AnsiString TransformerID;
TTreeNode *LTR_Transf;
temp = new AnsiString;
memset(temp,0,Ls_TransformerID.Length());
memcpy(temp,Ls_TransformerID.c_str(),Ls_TransformerID.Length());
LTR_Transf->Data =temp;
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏岸寻柳 2003-12-12
  • 打赏
  • 举报
回复
用new或者不用new都可以的,殊途同归嘛!

TreeNode绑定的Data类型是void *,用new的话就是一个指针对象,不用new的话就用引用,和指针一样的。
iris_zhu 2003-12-12
  • 打赏
  • 举报
回复
我再研究研究有点糊涂啦!现在!
GoodAlan 2003-12-12
  • 打赏
  • 举报
回复
是呀,你不用也可以的
netsys2 2003-12-12
  • 打赏
  • 举报
回复
为什么要new 呢?


AnsiString Ls_TransformerID = Query1->Fields->Fields[0]->AsString;
iris_zhu 2003-12-12
  • 打赏
  • 举报
回复
to netsys2(抓住领头羊) ( ) 谢谢你!
33619969是从数据库里检索出来的!我必须要new新的ansistring吧?
while(Query->Eof)
{
temp = new AnsiString;
memset(temp,0,Ls_TransformerID.Length());
memcpy(temp,Ls_TransformerID.c_str(),Ls_TransformerID.Length());
LTR_Transf->Data =temp;
Query->Next();
}

我用AnsiString((char*)(MainFrm->TreeView1->Selected->Data))取出的str,其长度就是9了而不是8!

如果检索出的数据是7位的话就是正常的!
我该怎么解决呢?
netsys2 2003-12-12
  • 打赏
  • 举报
回复
AnsiString temp;
AnsiString TransformerID;
TTreeNode *LTR_Transf;
AnsiString Ls_TransformerID = "33619969";
temp = Ls_TransformerID;
LTR_Transf->Data = &temp;

13,822

社区成员

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

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