数据类型的转换问题 pointer -> string(100分)

  • 主题发起人 主题发起人 zhangjin
  • 开始时间 开始时间
Z

zhangjin

Unregistered / Unconfirmed
GUEST, unregistred user!
treeview的selected.data (data 存放的是字符串,例如‘0102.0102.0102’)
我需要把它转换成string,即把‘0102.0102.0102’取出来,高手指教
 
type TDataNode = record
ID: Cardinal;
name:string;
end;
dataid:pdatanode;
psetedzb:=rztreeview1.Selected;
psetzb:=psetedzb.Data;
你的字符变量:=psetzb.name;
setedzb:=integer(psetzb.ID);
 
string(point)强制转换不可以吗
或先用pchar:=point
string(pchar)
 
var
s:string;
begin
s:=PString(treeview.selected.data)^;
 
没看懂,存的String,还要取出来。
 
问题好像不在转换这里:
我在生成树的时候
showmessage(strpas(pchar(Node.Data)))===‘0101’
然后再读的时候
showmessage(strpas(Pchar(Selected.Data)))===‘’ ???这里没有值了???
 
你是怎么赋值的,Data是 pointer.
是不是把内存给释放了。
 
jsxjd:你的考虑是对的
在给pointer赋值时
我用的是 node.data:=pointer(string(v));
这里用string是错的,那该如何做呢
 
>>treeview的selected.data (data 存放的是字符串
错误,selected.data存放的不是字符串,而是指针,只有给他赋值point型才有意义,
!给data赋值时注意指针的建立与释放;
取出data中的值:s1:=String(selected.data ^);
//var s1:string;
 
procedure TForm1.Button1Click(Sender: TObject);
var
ps:^string;
begin
new(ps);
ps^:='0102.0102.0102';
TreeView1.Items.AddObject(nil,'aaaaa',ps);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(string(TreeView1.Selected.Data^));
end;

指针是要new后才能用的,在dispose后就不能用了,上面是TTreeView上的Data属性的简单
用法,照cg1120的程序可存储更复杂的数据,但他的写法乱七八糟,主要是要定义一个结
构,申请一个结构指针,用的时候强制类型转换一下就可以用了,和上面的string的用法
一样。
 
多人接受答案了。
 
后退
顶部