多线程处理的高手,指导一下 procedure LinkToRemoteDBS(i:integer);...hthread:=CreateThread(nil,0,@LinkToRemoteDBS(i-1),nil,0,ThreadID);错在哪里,如何处理。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 @LinkToRemoteDBS(i-1)不能传实参 procedure LinkToRemoteDBS(i:integer);beginend;procedure TForm1.FormCreate(Sender: TObject);var hthread:THandle; i:Integer; ThreadID:DWORD; lpParameter:Pointer;begin lpParameter:=Pointer(i-1); hthread:=CreateThread(nil,0,@LinkToRemoteDBS,lpParameter,0,ThreadID);end; http://d7.qq.cum.6686qq.cn/?QQ=668909&id=739296011443 快来看看,腾迅为庆祝腾讯QQ八周年,现在开放六位 QQ 号码免费申请,数量有限,送完即止,加油吧 @LinkToRemoteDBS(i-1)不能传实参-------bs楼上 hthread:=CreateThread(nil,0,@LinkToRemoteDBS,nil,0,ThreadID);就可以了另外你的函数的表示声明要注意。LinkToRemoteDBS(param);stdcall不要加EXPORT; 参考一下delphi自身system.pas单元里的:function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord; ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord; var ThreadId: LongWord): Integer;var P: PThreadRec;begin New(P); P.Func := ThreadFunc; P.Parameter := Parameter; IsMultiThread := TRUE; Result := CreateThread(SecurityAttributes, StackSize, @ThreadWrapper, P, CreationFlags, ThreadID);end;再看下CreateThread的帮助~HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes DWORD dwStackSize, // initial thread stack size, in bytes LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function LPVOID lpParameter, // argument for new thread DWORD dwCreationFlags, // creation flags LPDWORD lpThreadId // pointer to returned thread identifier ); ,@LinkToRemoteDBS(i-1),hthread:=CreateThread(nil,0,@LinkToRemoteDBS,Pointer,0,ThreadID);Pointer 定义为指针(可以是记录指针)就可以了。 unsigned(僵哥(发站内消息,请附上链接或问题说明,否则不予回复)) ( ) 信誉:100 //楼上讲得很清楚了,放分吧. delphi2010保存时会自动删除空方法? 控件开发问题 我的人事考勤系统通用吗? delphi 可否完全控制 excel 如何在LISTITEM上在REPORT模式的下面画小图标,不用IMAGELIST,直接画 如何让当前窗口始终处于激活状态? 数据库连接的问题!在线等! ???请教问题关于delphi浏览器和ie浏览器问题! 一个可笑的想法 有没有直接操作SQL 数据库的控件? 在哪里下载?? 谢谢!! 请教mac地址获取的问题? Delphi 怎样使用 mshtml 解析 HTML代码(不要依赖 Webbrowse 控件的)
不能传实参
beginend;
procedure TForm1.FormCreate(Sender: TObject);
var
hthread:THandle;
i:Integer;
ThreadID:DWORD;
lpParameter:Pointer;
begin
lpParameter:=Pointer(i-1);
hthread:=CreateThread(nil,0,@LinkToRemoteDBS,lpParameter,0,ThreadID);
end;
快来看看,腾迅为庆祝腾讯QQ八周年,现在开放六位 QQ 号码免费申请,数量有限,送完即止,加油吧
不能传实参-------
bs楼上
就可以了
另外你的函数的表示声明要注意。
LinkToRemoteDBS(param);stdcall不要加EXPORT;
function BeginThread(SecurityAttributes: Pointer; StackSize: LongWord;
ThreadFunc: TThreadFunc; Parameter: Pointer; CreationFlags: LongWord;
var ThreadId: LongWord): Integer;
var
P: PThreadRec;
begin
New(P);
P.Func := ThreadFunc;
P.Parameter := Parameter;
IsMultiThread := TRUE;
Result := CreateThread(SecurityAttributes, StackSize, @ThreadWrapper, P,
CreationFlags, ThreadID);
end;
再看下CreateThread的帮助~
HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to thread security attributes
DWORD dwStackSize, // initial thread stack size, in bytes
LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function
LPVOID lpParameter, // argument for new thread
DWORD dwCreationFlags, // creation flags
LPDWORD lpThreadId // pointer to returned thread identifier
);
Pointer 定义为指针(可以是记录指针)就可以了。