Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi DLL und exception von der borlndmm.dll beim Programm beenden (https://www.delphipraxis.net/72498-dll-und-exception-von-der-borlndmm-dll-beim-programm-beenden.html)

xSkaschY 1. Jul 2006 14:53


DLL und exception von der borlndmm.dll beim Programm beenden
 
Hallo,

habe nun mal ein wenig mit dem DLL programmieren begonnen.

Das Tool funktioniert auch tadellos, jedoch beim schliessen des Programms bekomme ich eine exception reingewürgt.

Der Titel der Errormsg wird belohnend mit "Application Error" rausgeworfen und der Inhalt beläuft sich auf:

Exception EAccessViolation in module borlndmm.dll at 00003D76.
Access violation at adress 21663D76 in module 'borlndmm.dll'. Write of adress 212019A0.

Nur leider kann ich mit diesen Zahlen nichts Anfangen.

Der Sourcecode, wo die DLL's eingebunden werden sieht folgendermasen aus:

Delphi-Quellcode:
procedure TformMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  try
 
    if assigned(imexCheckforUpdates) then try
      FreeLibrary(imexUpdate);
    except
      on E: Exception do begin
        MessageDlg('Fehler beim entladen der Dll imexUpdate.dll:'+#13+E.Message, mtError, [mbOk], 0);
        exit;
      end;
    end;

    if assigned(imexImportFile) then try
      FreeLibrary(imexImport);
    except
      on E: Exception do begin
        MessageDlg('Fehler beim entladen der Dll imexImport.dll:'+#13+E.Message, mtError, [mbOk], 0);
        exit;
      end;
    end;

  finally
    Application.Terminate;
  end;

end;
                 
procedure TformMain.FormCreate(Sender: TObject);

begin
  try
    if not assigned(imexUpdateSetHandle) then try
      imexUpdate := LoadLibrary('imexUpdate.dll');
    except
      on E: Exception do begin
        MessageDlg('Fehler beim Laden der Dll imexUpdate.dll:'+#13+E.Message, mtError, [mbOk], 0);
        exit;
      end;
    end;


    if not assigned(imexImportFile) then try
      imexImport := LoadLibrary('imexImport.dll');
    except
      on E: Exception do begin
        MessageDlg('Fehler beim Laden der Dll imexImport.dll:'+#13+E.Message, mtError, [mbOk], 0);
        exit;
      end;
    end;

  finally
    @imexImportFile     := GetProcAddress( imexImport, 'imexImportFile');
    @imexImportSetHandle := GetProcAddress( imexImport, 'imexImportSetHandle');
    @imexCheckforUpdates := GetProcAddress( imexUpdate, 'imexCheckforUpdates');
    @imexUpdateSetHandle := GetProcAddress( imexUpdate, 'imexUpdateSetHandle');
  end;
end;
Wird daraus jemand schlau?


EDIT

Die .exe wird trotz beendigung weiter im Prozessmanager angezeigt! :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 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