TTimer初始化出现错误......(60分)

  • 主题发起人 主题发起人 paulannar
  • 开始时间 开始时间
P

paulannar

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写一个DLL,里面的一个过程想用到TTimer,但调用时出现“非法操作”,说某某地址内存不能为读。
我的过程是这样的
procedure MyPro(); stdcall; export;
var
MyTimer: TTimer;
begin
MyTimer.Create(MyTimer) 这里使用MyTimer.Create(Self)编译不过去。
end;
即使只有这一句话,也会出现非法操作。
我在Delphi和VB下都试了,结果一样。
请问这是为什么?我改如何处理?
谢谢各位了!
 

好像 MyTimer.Create(MyTimer)不是这样写的吧
 
MyTimer.Create();
 
procedure MyPro(); stdcall; export;
var
MyTimer: TTimer;
begin
MyTimer.Create(nil);
end;

也可以:
procedure MyPro(); stdcall; export;
var
MyTimer: TTimer;
begin
MyTimer.Create(application);
//但前提是你传入了application句柄,否则不能用这个。
end;
 
你写错了应该是
MyTimer := TTimer.Create(nil);

然后有一个释放的函数
MyTimer.Free;
 
try
MyTimer := TTimer.Create(self);
//..........
finally
MyTimer.Destroy;
end;
 
MyTimer.Create(nil);
或者:
MyTimer.Create(application);//如果你传入了application句柄
 
我晕倒!MyTimer:=TTimer.Create(nil);
Create是类函数,必须通过类来调用,而不能通过实例来调用!
 
同意 aizb .
MyTimer 必须先实例化才能调用他的一切方法,包括 Create() .
 
晕就晕吧
 
多人接受答案了。
 
后退
顶部