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;
好了,这样就可以传递到自己的参数了,如下图:
本文详细介绍了在Delphi中如何通过记录类型(Record)和指针在多线程间传递复杂数据结构的方法。具体步骤包括声明Record类、编写线程函数以及在按钮点击事件中创建线程并传递参数。
824

被折叠的 条评论
为什么被折叠?



