Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Dcc70.dll mit Zugriffsverletzungen beim dpk Installieren (https://www.delphipraxis.net/136592-dcc70-dll-mit-zugriffsverletzungen-beim-dpk-installieren.html)

QuickAndDirty 3. Jul 2009 12:09


Dcc70.dll mit Zugriffsverletzungen beim dpk Installieren
 
Es passiert nur bei einem bestimmten Package.
Wenn ich installieren drücke passiert
beim LINKEN

der Fehler

"Zugriffsverletzung bei Adresse" ( Sad ) " 009D1866 in Modul dcc70.dll' Lesen von Adresse 88037007."

Was passiert beim Installieren anderes als beim erzeugen?

QuickAndDirty 3. Jul 2009 16:37

Re: Dcc70.dll mit Zugriffsverletzungen beim dpk Installieren
 
Eine Ursache scheint zu sein
das folgende Konstruktion
KEINE Exception wirft.

Sprich im Initialization teil scheint der ReRaise nicht zu funktionieren
wenn ich das Package installiere.

Es kommt die dämliche Fehler Meldung mit der Zugriffsverletzung

Es hätte aber Eine Meldung über eine nicht existierende Datei kommen müssen....
Und in der Anwendung klappt das auch.


So geht es (also mit der richtigen Fehlermeldung)
Delphi-Quellcode:

initialization

//  try
    Libs := TRunSmartLibs.Create; // Bibliotheken Verwaltungsobjekt Erzeugen
    InitWithDefaults := true; // Standardmässig Default Einstellungen verwenden
    InitStandards;  //Dateizugriff auf INIFile welche die Einstellungen lädt
    If InitWithDefaults then
      LoadDBLib(DBLibDLLName(DefaultDB));//Laden der DLL//BPL Funktionen in die Procedure variablen
//  except
//    on e:Exception do
//      raise exception.create(e.Message+#13#10'In Unit Libimport Initialization');
//  end;

Finalization

//  try
    //  UnloadDBLib;// Alle Bilbliotheken wieder entladen.
    if assigned(libs) then
      Libs.free;// Bibliotheksverwaltungsobjekt freigeben.
//  except
//    on e:Exception do
//      raise exception.create(e.Message+#13#10'In Unit Libimport Finalization');
//  end;

end.
So nicht

Delphi-Quellcode:
initialization

  try
    Libs := TRunSmartLibs.Create; // Bibliotheken Verwaltungsobjekt Erzeugen
    InitWithDefaults := true; // Standardmässig Default Einstellungen verwenden
    InitStandards;  //Dateizugriff auf INIFile welche die Einstellungen lädt
    If InitWithDefaults then
      LoadDBLib(DBLibDLLName(DefaultDB));//Laden der DLL//BPL Funktionen in die Procedure variablen
  except
    on e:Exception do
      raise exception.create(e.Message+#13#10'In Unit Libimport Initialization');
  end;

Finalization

  try
    //  UnloadDBLib;// Alle Bilbliotheken wieder entladen.
    if assigned(libs) then
      Libs.free;// Bibliotheksverwaltungsobjekt freigeben.
  except
    on e:Exception do
      raise exception.create(e.Message+#13#10'In Unit Libimport Finalization');
  end;

end.
Vermutlich also erstmal das Problem behoben...sobald ich die vermisste Datei in den Projects Ordner kopiere...
Falls irgendwem dieser Monolog weiterhilft.

Wie habe ich das herrausbekommen?

Ein Dummy Package mit nem TEDIT nachfahren Genommen und schritt weise Units die ich in dem original package verwende
hinzu genommen und in der Dummykomponente benutzt...
bis sich der Fehler einstellte...
Danach Abschnittsweise in der Unit auskommentiert....
Dabei bin ich auf
den Code
Delphi-Quellcode:
raise Execption(E.message+'BLA')
gestoßen der sich scheinbar kompilieren lässt...
dachte das muss doch heißen
Delphi-Quellcode:
raise Execption.create(E.message+'BLA')
da habe ich dann versucht mal ohne Try Excepts zu installieren....
tja..
so ein Scheiß.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz