关于package的问题,急、急、急!(200分)

  • 主题发起人 主题发起人 foreat
  • 开始时间 开始时间
F

foreat

Unregistered / Unconfirmed
GUEST, unregistred user!
打包的单元(包名:myfirst_bpl.bpl)
**************************************************
unit myfirst_unit;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
Tmyfirst = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
procedure justtest;
{ Public declarations }
end;
var
myfirst: Tmyfirst;

implementation

{$R *.DFM}
procedure Tmyfirst.justtest;
begin
showmessage('ok');
end;

initialization
RegisterClass(Tmyfirst);
end.


调用单元
******************************************************
unit bpl_test;
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
myhmodule : HMODULE;
myClass: TPersistentClass;
myForm : TCustomForm;
{ Private declarations }

public
procedure loadbpl;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
const

procedure tform1.loadbpl;
begin
try
myhmodule := loadpackage('myfirst_bpl.bpl');
myclass := GetClass('Tmyfirst');
if myclass <> nil then
myform := TCustomForm(TComponentClass(myclass).create(application));
except
showmessage('SomeThing Went Wrong!');
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
loadbpl;
end;

end.

问题是
****************************************
getclass时没有成功,myclass = nil,错在哪呢?请赐教!特急!

 
implementation
uses myfirst_unit; // 同 BPL 一起发布你的 DCU
可以解决你的问题,但是我不知道是否恰当。
 
你肯定不是在装入BPL时或其它什么地方出错吗?我在
myform := TCustomForm(TComponentClass(myclass).create(application));
下面加了一行
myform.ShowModal;
嘿,myfirst窗口都显示出来了!!
不过,退出主程序时内存访问犯规,可能是释放myfirst造成的,我没检查。

foreat,你是打算做什么呀?这条路子可以走,我很赞同!(若改用二楼的办法可就毫无意义了)
 
我是想通过传入bpl_test的不同参数调用不同的.BPL,既然你都实现了,我再试试吧
 
告诉你一个办法吧,
www.inprises.com -> 控件天堂 的最末尾有李维关于动态 Package 的文档。
 
foreat:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
请继续或结束
 
请结束或继续
 
多人接受答案了。
 
后退
顶部