1. 声明一个Record类
type
MyData = record
title:pchar;
str:string;
num:Integer ;
end ;
PMyData = ^MyData;
MyData = record
title:pchar;
str:string;
num:Integer ;
end ;
PMyData = ^MyData;
2. 线程函数像这样写
Function ThreadProc(Para:PMyData):integer;stdcall;
begin
result: = 0 ;
Form1.Canvas.TextOut( 10 , 10 ,Format( ' %s,%s,%d ' ,[Para^.str,Para^.title,para^.num ]));
end ;
begin
result: = 0 ;
Form1.Canvas.TextOut( 10 , 10 ,Format( ' %s,%s,%d ' ,[Para^.str,Para^.title,para^.num ]));
end ;
3.写下传递过程呗
procedure
TForm1.btnClick(Sender: TObject);
var
Ro:PMyData ;
hThread: THandle;
ThreadID: DWORD;
begin
getmem(p,sizeof(p)); // 分配内存
hThread: = 0 ;
try
Ro.title: = ' 我的自定义参数 ' ; // 数据分配
Ro.str: = ' 测试成功 ' ;
Rp.num : = 100 ;
hThread: = createthread( nil , 0 ,@ThreadProc,Ro, 0 ,ThreadID);
finally
if hThread <> 0 then closehandle(hThread);
if Ro <> nil then freemem(Ro);
end ;
end ;
var
Ro:PMyData ;
hThread: THandle;
ThreadID: DWORD;
begin
getmem(p,sizeof(p)); // 分配内存
hThread: = 0 ;
try
Ro.title: = ' 我的自定义参数 ' ; // 数据分配
Ro.str: = ' 测试成功 ' ;
Rp.num : = 100 ;
hThread: = createthread( nil , 0 ,@ThreadProc,Ro, 0 ,ThreadID);
finally
if hThread <> 0 then closehandle(hThread);
if Ro <> nil then freemem(Ro);
end ;
end ;
好了,这样就可以传递到自己的参数了,如下图: