比如我有这样一个过程
procedure thread1(x,y:integer);
begin
x:= x+y;
end;然后我需要这个过程作为一个线程执行,你们这个参数应该怎么送过去
createThread(nil, 0, @Thread1, nil, 0, tid);
CreateTrhead没有送参数的地方呀
procedure thread1(x,y:integer);
begin
x:= x+y;
end;然后我需要这个过程作为一个线程执行,你们这个参数应该怎么送过去
createThread(nil, 0, @Thread1, nil, 0, tid);
CreateTrhead没有送参数的地方呀
解决方案 »
- 如何将二进制数转换为十六进制显示?
- 如何快速查询 没有刻录(Burned=0)、排在最前面(按ID排序)的数据大小之和(sum(size))小于或等于光盘容量的所有记录
- DBGRID显示列名出错的问题
- [各位高手,请问没有硬字库的1121怎么通过写并口打出汉字来?]
- 提示问题及日期计算问题
- 1个adoquery用的我头都大了,刚学delphi,来个老师看看
- 用三层中遇到数据问题
- DELPHI怎么读取其它程序QWidget类里的数据?
- 给大家拜年!祝大家新春愉快,马年行好运。偶没钱只有以分当红包。
- 数据库的问题。对于高手是很简单的。我是处学者,帮帮我吧
- 【求教】使用Delphi编写多文档程序时如何屏蔽子窗口最大化到主窗口后右上角的“向下还原”按钮而保留“关闭”按钮
- 动态创建的窗体如何让窗体显示的时候把Edit1的Text属性设为空
create(a ,b:String)
begin
...
end;
constructor create(ASocket :TCustomWinSocket; AHandle :THandle);//定义
constructor thdServerClient.create(ASocket: TCustomWinSocket; AHandle :THandle);
begin
FClientSocket := ASocket;
FHandle := AHandle;
inherited create(false,TServerClientWinSocket(ASocket));
end;
上面就是个例子,这样重写后,参数就变成了两个.你可以同样加你想加的参数进去
procedure thread1(x,y:integer);
begin
x:= x+y;
end;然后我需要这个过程作为一个线程执行,你们这个参数应该怎么送过去
createThread(nil, 0, @Thread1, nil, 0, tid);
CreateTrhead没有送参数的地方呀
procedure thread1(x,y:integer);
begin
x:= x+y;
end;然后我需要这个过程作为一个线程执行,你们这个参数应该怎么送过去
createThread(nil, 0, @Thread1, nil, 0, tid);
CreateTrhead没有送参数的地方呀
上面不小心打回车了,,引入第三个procdureprocedure procx;
begin
thread1(x,y:integer);
end;createThread(nil, 0, @procx, nil, 0, tid);
不就搞定啦
TWaitSend = record
Buffer: String;
WaitTime: Integer;
end;procedure WaitSendThread(Ptr:PWaitSend);stdcall;
begin
try
Sleep(Ptr^.WaitTime); //使用刚刚传递的参数
MySend(Ptr^.Buffer);//同上
Except
on E: Exception do
begin
AddLog('Error:WaitSendThread!'#13#10'Message:'+E.Message);
end;
end;
end;procedure WaitSend(Buffer:String; WaitTime:Integer);
var
ThreadID: DWORD;
Data: PWaitSend;
begin
New(Data); //Data是一个自定义类型,用它来传递参数
Data^.Buffer:=Buffer; //参数赋值
Data^.WaitTime:=WaitTime; //同上
CreateThread(nil,0,@WaitSendThread,Data,0,ThreadID); //创建线程
end;