很郁闷的问题。 ( 积分: 0 )

  • 主题发起人 主题发起人 mill666
  • 开始时间 开始时间
M

mill666

Unregistered / Unconfirmed
GUEST, unregistred user!
我自己建立了一个包package1.bpl,然后在主程序program1.exe里面loadpackage这个包。
在package1.bpl里面定义了一个函数crewin,并且定义一个类Twin。
function crewin:Twin;
begin
result:=twin.create(application);
end;
然后在改unit的后面:
initialization
RegisterClass(Twin);
finalization
UnRegisterClass(Twin);


主程序通过getprocaddress取得crewin的地址,然后执行crewin,意思就是调用函数crewin。
程序编译没有问题,当程序执行到调用函数crewin的时候,出现错误:Resource Twin not found。
可是如果我把函数crewin改成如下:
function crewin:Twin;
begin
result:=tform.create(application);
end;
就是改成直接从Tform类生成,结果确实是没有问题了,一点错误都没有了。

可是我的Twin也只是简单的从Tform继承过来而已,没有其他特别的地方。

请问这是为什么啊???

俺被这个问题卡住N天了,大侠快快帮忙
 
我自己建立了一个包package1.bpl,然后在主程序program1.exe里面loadpackage这个包。
在package1.bpl里面定义了一个函数crewin,并且定义一个类Twin。
function crewin:Twin;
begin
result:=twin.create(application);
end;
然后在改unit的后面:
initialization
RegisterClass(Twin);
finalization
UnRegisterClass(Twin);


主程序通过getprocaddress取得crewin的地址,然后执行crewin,意思就是调用函数crewin。
程序编译没有问题,当程序执行到调用函数crewin的时候,出现错误:Resource Twin not found。
可是如果我把函数crewin改成如下:
function crewin:Twin;
begin
result:=tform.create(application);
end;
就是改成直接从Tform类生成,结果确实是没有问题了,一点错误都没有了。

可是我的Twin也只是简单的从Tform继承过来而已,没有其他特别的地方。

请问这是为什么啊???

俺被这个问题卡住N天了,大侠快快帮忙
 
现在问题的关键集中在从Tform继承的类的create问题了。
我现在就简单建立一个项目,然后就在窗口form1上放置一个按钮;在interface部分申明一个类Txx=class(Tform);

按钮的click事件:
var
xx:Txx;
begin
xx:=Txx.Create(self);
xx.ShowModal;
end;
程序执行后,点击按钮,同样出现Resource Txx not found。
看来问题的关键跟包没有什么关系了。关键的问题集中在从Tform类继承的类的create的问题。
 
就是没有.dfm文件, 所以Resource Txx not found
 
江维,那怎么让它有.dfm ???
 
既然你要用LoadPackage, 就没有必要像LoadLibrary一样来调用getprocaddress方法, 你可以看一下, Delphi的VCL的RegisterClass是怎么注册, 以及如何调用的, 如果仍然搞不好, 请发邮件给我 iihe602@yahoo.com.cn
 
你可以用可视化继承嘛,如果不行,那就将用"动态窗口"技术,也可以解决的,你以前在网上见过,你可以在gooogle在搜索一下
 
后退
顶部