读书人

线程怎么取指针的值

发布时间: 2012-03-13 11:21:11 作者: rapoo

线程如何取指针的值?

Delphi(Pascal) code
function ThreadProc(pIPAddr: Pointer): DWORD; stdcall;var  lpIPAddr: PAnsiChar;begin // lpIPAddr := PChar(pIPAddr);  MessAgeBox(0, PAnsiChar(pIPAddr), nil, 0);end;var  lpIPAddr: PAnsiChar;begin  GetMem(lpIPAddr, 255);  ZeroMemory(lpIPAddr, 255);  StrCopy(lpIPAddr, '192.168.1.110');  hThread := CreateThread(nil, 0, @ThreadProc, @lpIPAddr, 0, dwThreadID);  WaitForSingleObject(hThread, INFINITE);  FreeMem(lpIPAddr);end;


[解决办法]
Delphi(Pascal) code
function ThreadProc(pIPAddr: Pointer): DWORD;var  lpIPAddr: PAnsiChar;begin  lpIPAddr := PChar(pIPAddr);  MessageBox(0, PAnsiChar(pIPAddr), nil, 0);end;procedure TForm1.FormCreate(Sender: TObject);var  lpIPAddr: PAnsiChar;  hThread: Integer;  dwThreadID: Cardinal;begin  GetMem(lpIPAddr, 255);  ZeroMemory(lpIPAddr, 255);  StrCopy(lpIPAddr, '192.168.1.110');  hThread := BeginThread(nil, 0, @ThreadProc, lpIPAddr, 0, dwThreadID);  WaitForSingleObject(hThread, INFINITE);  FreeMem(lpIPAddr);end;
[解决办法]
真要写成类的方法的话,就在线程内调用类的方法,如:

function ThreadProc(pIPAddr: Pointer): DWORD;
begin
Form1.ThreadProc1(pIPAddr)
end;

function TForm1.ThreadProc1(pIPAddr: Pointer): DWORD;
var
lpIPAddr: PAnsiChar;
begin
lpIPAddr := PChar(pIPAddr);
MessageBox(0, PAnsiChar(pIPAddr), nil, 0);
end;

读书人网 >.NET

热点推荐