当我在线程中使用记录时,例如:
type
TClient = Class(TThread)
public
mcmd:record
cid:Byte;
kd, recvresponse:Boolean;
end;
当我尝试访问一个变量时,它会返回一个随机值。是编译器的问题吗?我在 Windows 7 x64 上使用 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
。