Einzelnen Beitrag anzeigen

Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#18

Re: Neustrukturierung einer DLL

  Alt 6. Jul 2007, 15:15
ok..es gibt ein paar Plugins die wirklich Resourcen fressen. Und Winamp selbst machts auch so,das es das alte Plugin beendet, bevor es das neue startet.

Aber dafür gibts ne einfach Lösung. Gib HVIS nicht nach außen und handle das intern selbst (globale Variable). Dazu noch eine, die dir sagt, welcher Art das aktuell laufende Plugin ist.

Damit kannst du dann die Interface-Routinen stark vereinfachen. Für "Create" und "Destroy" brauchst du jeweils nur 1 Funktion. Der wird vom Anwender übergeben, welche Art von Plugin er haben möchte. Alle anderen Funktionen brauchst du auch nur einmal, da du ja dann intern weißt, welcher Plugintyp läuft.

Das würde dann fürs Erzeugen z.B. so aussehen:

Delphi-Quellcode:

   function BASSVIS_INIT(Kind:BASSVIS_KIND_T;AppHandle:Dword;WndHandle:HWND):bool;
   begin
     if (GLOBALHVIS <> 0) then
         BASSVIS_EXIT; //altes Plugin freigeben
     GlobalKind := Kind;
     Case Kind of
        SONIQUE : GLOBALHVIS := BASS_SONIQUEVIS_CreateVis...
        WINAMP : GLOBALVIS := BASS_WINAMPVIS_ExecuteVis....
        WMP : GLOBALVIS := BASS_WMPVIS_ExecuteVis....
     end;
   end;
So kannst du alle Funktionen die notwendig sind, globalisieren.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat