原文:
...
type
TForm1=class(TForm);
...
end;procedure test(p:pointer);stdcall //--注意这个过程没有在TForm1中执行
begin
//--我的处理过程
end;procedure TForm1.onCreate(Sender:TObject);
var
hThread,ThreadId:Dword;
begin
hThread :=createThread(nil,0,@test,nil,0,ThreadId);
end;新的处理方式:
...
type
TForm1=class(TForm);
...
public
procedure test(p:pointer);stdcall; //--我把处理线程放到TForm1中
end;procedure TForm1.test(p:pointer); //--注意这个过程在TForm1中执行
begin
//--我的处理过程
end;procedure TForm1.onCreate(Sender:TObject);
var
hThread,ThreadId:Dword;
begin
hThread :=createThread(nil,0,@test,nil,0,ThreadId); //--错误在这里***
//--错误提示没有需求的变量
end;我想高手们都看明白了吧,就是我要把TForm1外的线程写进TForm1内..
...
type
TForm1=class(TForm);
...
end;procedure test(p:pointer);stdcall //--注意这个过程没有在TForm1中执行
begin
//--我的处理过程
end;procedure TForm1.onCreate(Sender:TObject);
var
hThread,ThreadId:Dword;
begin
hThread :=createThread(nil,0,@test,nil,0,ThreadId);
end;新的处理方式:
...
type
TForm1=class(TForm);
...
public
procedure test(p:pointer);stdcall; //--我把处理线程放到TForm1中
end;procedure TForm1.test(p:pointer); //--注意这个过程在TForm1中执行
begin
//--我的处理过程
end;procedure TForm1.onCreate(Sender:TObject);
var
hThread,ThreadId:Dword;
begin
hThread :=createThread(nil,0,@test,nil,0,ThreadId); //--错误在这里***
//--错误提示没有需求的变量
end;我想高手们都看明白了吧,就是我要把TForm1外的线程写进TForm1内..
解决方案 »
- 打不开指定网页,原因是把"&"给自动的去掉了,怎么办??
- 怎样根据考勤刷卡数据怎样查询得出人员某天的上下班时间
- 如何安装控件?
- 各位大哥,一个考勤问题,小弟非常迷茫,在此请教!(有比较好的答案就揭贴)
- ADO小问题,进来看看
- ------各位有谁用过DUnit(Delphi的终极测试器)进行过单元测试?--------
- 用什么方法可以侦测到用户修改系统时间 ?
- CheckBox控件如何实现Caption字串换行??
- Delphi 为什么我用acreport 打印的时候 内详!
- 请问哪里有 delphi 5开发人员指南 光盘程序下啊?..
- Delphi中有实现h323协议栈的开发包吗?
- 怎么关闭数据更新后的自动提交功能!!!!!!!!!
期待正确的处理方法......
首先,只要是TForm1的成员函数,那么eax肯定是TForm1,也就是thisCreateThread的过成地址是一个标准的stdcall的函数。你可以新建一个线程类来实现也许更好一点吧
FInstance := MakeObjectInstance(test);
hThread :=createThread(nil,0,@test,nil,0,ThreadId); ...
FInstance: Pointer;
TForm1=class(TForm);
i : Integer;
end;procedure test(p:pointer);stdcall //--注意这个过程没有在TForm1中执行
var
fm : TForm1;
begin
//--我的处理过程
fm:=TForm1(p);
//用 fm 访问当前TForm1的实例及成员
//比如 fm.i=100;
end;procedure TForm1.onCreate(Sender:TObject);
var
hThread,ThreadId:Dword;
begin
hThread :=createThread(nil,0,@test,self,0,ThreadId); //这里
end;
我要建立同时建立n个(n>=1)TForm1.实例和线程,不知道你的处理方法可行吗?
fm:=TForm1(p); ///--??????????????
不行啊!
我的程序不是用的TForm
而是我自己建的类
type
TMyClass=class;
protected
construcator create();
..
public
setthreadrun;
end;procedure test(p:pointer);stdcall //--注意这个过程没有在TForm1中执行
var
fm : TMyClass;
begin
fm:=TMyClass(p); //错误发生在这里,fm=nil 肯定有问题??????????????
//--我的处理过程
end;constructor TMyClass.create();
begin
inherited create();
end;procedure TMyClass.setthreadrun();
var
hThread,ThreadId:Dword;
begin
hThread :=createThread(nil,0,@test,nil,0,ThreadId);
end;//--另外一个建立类的程序:
uses uMyclass;
procedure TForm1.button1onclick(sender:Tobject);
var
t:TMyclass;
begin
t:=TMyclass.create();
t.setthreadrun;
end;求救!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
奇怪, myy 解決了你的問題???