当我在线程中使用记录时,例如:
type
TClient = Class(TThread)
public
mcmd:record
cid:Byte;
kd, recvresponse:Boolean;
end;
当我尝试访问变量时,它返回一个随机值。 这是编译器的问题吗? 我在Windows 7 x64&amp ;;上使用Delphi 6我要做的就是:
var
c:TClient;
begin
if listview1.itemfocused = nil then Exit;
c := ListView1.ItemFocused.Data;
if c = nil then Exit;
ShowMessage(IntToStr(c.mcid.cid));
end;
我如何分配itemfocused数据变量:
Procedure TClient.New;
Begin
Main.ListView1.Items.BeginUpdate;
item := Main.ListView1.Items.Add;
item.Caption := Split(dat1, '|', 0);
item.SubItems.Add(ip);
item.Data := @Self;
Main.ListView1.Items.EndUpdate;
End;
我在Synchronize
打电话。
答案 0 :(得分:1)
Self
是一个局部变量。只要Data
返回,您在New
中存储的指针就会变为无效。您需要存储其值:
Self
的指针
Item.Data := Self;
如果没有编译,请输入。