CreateThread の呼び出しでクラス参照をパラメーターとして ThreadProc に渡すときに問題が発生しています。これは、私が抱えている問題を示すサンプル プログラムです。
program test;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, Dialogs;
type
TBlah = class
public
fe: Integer;
end;
function ThreadProc(param: Pointer) : DWORD;
begin
ShowMessage(IntToStr(TBlah(param).fe));
Result := 0;
end;
var
tID: DWORD;
handle: THandle;
b: TBlah;
begin
b := TBlah.Create;
b.fe := 54;
handle := CreateThread(nil, 0, @ThreadProc, Pointer(b), 0, tID);
WaitForSingleObject(handle, INFINITE);
end.
への呼び出しは、私が期待するものとは異なり、その中ShowMessage
に何かがあるメッセージボックスをポップアップします。245729105
54
これはおそらく、Delphi がどのように機能するかについての基本的な誤解にすぎないので、これを適切に機能させる方法を誰か教えてもらえませんか?