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;
好了,这样就可以传递到自己的参数了,如下图: