Einzelnen Beitrag anzeigen

DelphiNoobi

Registriert seit: 24. Apr 2007
8 Beiträge
 
#1

EAccessViolation beim Ausführen eines Packages

  Alt 27. Mai 2007, 12:38
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
  Mit Zitat antworten Zitat