Hallo,
Ich arbeite mit Delphi 7 und habe nach einem Tutorium die Erstellung von Packages studiert.
Im Mainprogramm wird nur das
Package durch PressButton aufgerufen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
PackageModule: HModule;
AClass: TPersistentClass;
begin
PackageModule := LoadPackage('Package1.bpl');
if PackageModule <> 0 then
begin
AClass := GetClass('TForm2');
if AClass <> nil then
with TComponentClass(AClass).Create(Application)
as TCustomForm do
begin
ShowModal;
Free;
end;
UnloadPackage(PackageModule);
end;
end;
Das klappt gut, solange das
Package aus einer
Unit besteht.
Delphi-Quellcode:
unit Unit2;
...
procedure TForm2.Button1Click(Sender: TObject);
begin
Self.Close;
end;
initialization
RegisterClass(TForm2);
finalization
UnRegisterClass(TForm2);
end.
Wenn ich dem
Package eine
Unit hinzufüge, die ich mit einem Button aufrufe, werden
Package und Programm nach wie vor ohne Fehlermeldung kompiliert und erzeugt.
Delphi-Quellcode:
unit Unit2;
...
implementation
uses Unit3;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Self.Close;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form3.Show;
Self.Close;
end;
initialization
RegisterClass(TForm2);
finalization
UnRegisterClass(TForm2);
end.
Drücke ich dann auf den Button der Unit3 öffnen soll, erhalte ich folgende Fehlermeldung:
Im Projekt Projekt1.exe ist eine
Exception der Klasse EAcceccViolation aufgetreten, Meldung: Zugriffsverletzung bei Adresse 004ADAC6 in Modul 'vcl70.bpl'. Lesen von Adresse 000002F4'.
Unit 3 ist ein leeres Formular.
Kann mir vielleicht wer einen Tip geben, was ich falsch mache?
Vielen Dank,
DelphiNoobi