Autor Beitrag
Masterrandy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: Do 18.08.05 10:16 
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
Einloggen, um Attachments anzusehen!
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
Masterrandy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: 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:

ausblenden volle Höhe 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55



BeitragVerfasst: 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 ;-)