AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PlugIn-System

Ein Thema von Tossi65 · begonnen am 12. Nov 2010 · letzter Beitrag vom 15. Nov 2010
Antwort Antwort
Seite 3 von 3     123   
Tossi

Registriert seit: 6. Jul 2003
Ort: Weserbergland
20 Beiträge
 
Delphi 7 Enterprise
 
#21

AW: PlugIn-System

  Alt 14. Nov 2010, 14:24
Hey,
echt super, dass Ihr alle mitmacht. Mir ist da eine Idee gekommen. Nur die Umsetzung??

In der Exe habe ich eine globale StringListe. Wenn ich mein Modulverzeichnis scanne und alle Module lade merke ich mir
Modulname und den Zeiger. Im LoadLirary wird dann für jede Form die initialization aufgerufen. Kann ich nicht hier etwas machen, um die Formulare auch in einer Liste zu haben?? Leider habe ich im Initialization noch kein Zugriff auf die Klasse oder??
  Mit Zitat antworten Zitat
Tossi65

Registriert seit: 5. Mär 2005
21 Beiträge
 
Delphi 7 Enterprise
 
#22

AW: PlugIn-System

  Alt 15. Nov 2010, 17:59
So ein Problem gelöst nu kommt ein neues.
Delphi-Quellcode:
procedure LadeModule;
var
  StrPfad: String;
  StrSuchPfad: String;
  SR: TSearchRec;
  FileAttrs: Integer;
  AHandle : Cardinal;
begin
  StrPfad := IncludeTrailingPathDelimiter( ExtractFilePath(ParamStr(0)))+ 'Module\';
  FileAttrs:= faAnyFile;
  StrSuchPfad := StrPfad + '*.mod';
  if FindFirst(StrSuchPfad, FileAttrs, SR) = 0 then
  begin
    repeat
      try
        if (SR.Attr and FileAttrs) = SR.Attr then
        begin
  // AHandle := LoadLibraryEx(PChar(StrPfad + Sr.Name),0,LOAD_LIBRARY_AS_DATAFILE);
          AHandle := LoadLibrary(PChar(StrPfad + Sr.Name));
          if AHandle > 0 then
          begin
            FModulListe.AddObject(Sr.Name,Pointer(AHandle));
            //Warum kracht es hier bei LoadLibrary??
            FreeLibrary(AHandle);
          end;
        end;
      except

      end;
    until FindNext(SR) <> 0;
    //Warum kracht es hier??
    FindClose(SR);
  end;
end;
Ich lade meine Module in eine Liste. Eigentlich kein Problem. Ich muss eigentlich mit LoadLibrary benutzen, damit die Initialisierung in den Forms der Module aufgerufen wird. So werden Die Forms in eine 2. Liste aufgenommen. Bis hierher
geht alles aber dann mit FreeLibrary() kommt dann eine Fehler bei Ardesse 000000!?!?!?!?!

Auch wenn ich die Registrierung im Modul ausmache. Mit LoadLibraryEx kommte der Fehler nicht.

Und dann kracht es bei FindClose mit "ungültiger Zeiger".

Kein Plan
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#23

AW: PlugIn-System

  Alt 15. Nov 2010, 18:13
Delphi-Quellcode:
            //Warum kracht es hier bei LoadLibrary??
            FreeLibrary(AHandle);
Ähem, wenn du FreeLibrary hier schon aufrufst, dann kann es nachher nur krachen, weil du damit das Modul schon freigibst.
Das solltest du erst ganz am Ende, wenn das Programm beendet wird.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#24

AW: PlugIn-System

  Alt 15. Nov 2010, 18:22
sind die DLL's die Du hier testweise lädst initialisiert?
Delphi-Quellcode:
library Test;
var
 SaveDllProc: Pointer;
 procedure LibExit(Reason: Integer);
begin
 if Reason = DLL_PROCESS_DETACH then
  begin
    .
                . // Exit-Code für Bibliothek
                .
  end;
   SaveDllProc(Reason); // Speichern der Eintrittspunkt-Prozedur
  end;
 begin
    .
                . // Code für die Initialisierung der Bibliothek
                .
  SaveDllProc := DllProc; // Speichern der Kette von Exit-Prozeduren
  DllProc := @LibExit; // Installieren der LibExit-Exit-Prozedur
 end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Tossi65

Registriert seit: 5. Mär 2005
21 Beiträge
 
Delphi 7 Enterprise
 
#25

AW: PlugIn-System

  Alt 15. Nov 2010, 18:39
@implementation
Ja das ist richtig. Ich rufe Loadlibrary auf damit die Initialisierung im Modul ausgeführt wird. Dabei werden alle
Formulare im Modul in eine Liste gespeichert.
Danach brauch ich das Handle eingentlich nicht mehr.

@Bummi
wofür ist die Funktion?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 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