我有傳遞類引用作爲參數傳遞給ThreadProc的中的CreateThread調用的問題。下面是一個說明我有這個問題的一個範例程序:將參數傳遞給CreateThread的
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
我期待。
這可能是德爾福是如何工作的只是一個基本的誤解,所以可能有人請告訴我如何得到這個工作正常?
'b.fe:= 42;',不要忘了':':) – Kokonotsu 2011-02-24 21:04:59
@Kokonotsu任何特別是不要使用'TThread'原因是什麼?至於'='和':=',猜猜我今天做了太多的P/Invoke! – 2011-02-24 21:06:29
很多打字,以及*截圖* ...快你是誰! – 2011-02-24 21:09:30