スレッドでレコードを使用すると、たとえば次のようになります。
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
ます。