Entwickler-Ecke

Sonstiges (Delphi) - Fehler beim Beenden des Programms


Masterrandy - Do 18.08.05 10:16
Titel: Fehler beim Beenden des Programms
Hallo,

habe ein Problem beim beenden meines Programm. Habe es von D3 nach D5 portiert. Läuft soweit ganz gut. Wenn ich aber eine andere DLL gelanden habe, das Programm danach schließe, bekomme ich die beiden Fehlermeldungen (siehe Anhang). Die zweite Meldung kommt immer wieder und ist nur zu schließen wenn ich über den Tastmanager den Task abschieße.

Woran kann das liegen? Ab Code hat sich nicht wirklich was geändert. Es sind jetzt einige Komponenten (von Dritten) anders und eine von D3 nach D5 portiert. Aber das scheint mir doch ein Problem in Delphi zu sein.

Gruß
Masterrandy


CenBells - Do 18.08.05 10:57

hi,

*Kristallkugel rauskram* Also.... *bedenkliches Schweigen* Hmm...

Nee, scherz beiseite. Ich würde sagen, du greifst auf ein objekt zu, das nicht mehr existiert.
Aber ohne code ist dir da nicht zu helfen, da diese fehler von so ziemlich alles und jedem verursacht werden können, ausser vielleicht deiner kaffeemaschine.

Gruß
KEn


Masterrandy - Do 18.08.05 11:32

Ok, ich weiß nicht ob es viel bringt, aber hier mal der Code, der die DLL im Hauptprogramm(ist auch eine DLL) aufruft:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
   if OQ_APPLICATIONSPLUGIN_TYPE.AsString = 'DDLL' then
    begin
  showmessage('Hier wird jetzt die Delphi DLL geladen !!');
      try
        if AutoUpdate then
        begin
          if CheckForFileUpdate(OQ_APPLICATIONSAPP_PATH.AsString) = -1 then exit;
        end;

        DLLHandle := LoadLibrary(PChar(AppPath + OQ_APPLICATIONSAPP_PATH.AsString));
        if DLLHandle <> 0 then
        begin
          FuncPtr := GetProcAddress(DLLHandle, 'OpenDelphiModul');
          if FuncPtr <> nil then
          begin
            @OpenDelphiModul := FuncPtr;
            AUploadDoc := OpenDelphiModul(application, Screen, OracleSession.LogonUsername,
              OracleSession.LogonPassword,
              OracleSession.LogonDatabase,
              TTreeNodeData(TV_AP.Selected.Data).FItemType,
              TTreeNodeData(TV_AP.Selected.Data).FItemKey,
              MAINPARAM,
              Param01);
          end;
        end
        else
        begin
          MessageDlg('Fehler 30: Modul "' + OQ_APPLICATIONSAPP_PATH.AsString + '" nicht gefunden !',
            mtError, [mbOk], 0);
        end;
      finally
  //FreeLibrary(DLLHandle);



Die Zeile mit "FreeLibrary(DLLHandle);" ist ursprünglich deaktiviert. Habe sie mal aktiviert, bekomme dann aber gleich beim schließen der 2. DLL einen Fehler, und nicht erst bei Programmende.


Masterrandy - Do 18.08.05 13:16

Habe den Fehler beheben können. Lag an einer Komponente die ich verwende. War aber ein Zufallstreffer, dass ich den Fehler gefunden habe ;-)