Einzelnen Beitrag anzeigen

Ghostwalker

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

Re: Neustrukturierung einer DLL

  Alt 7. Jul 2007, 16:58
Zitat von EWeiss:
Habe da noch ein verständnis problem

Du schreibst
procedure BASSVIS_Execute(Para:TExecutePara); Verstehe ich nun nicht so recht
Denn genau diese Funktion sollte exportiert und der ganze andere Kram gelöscht werden.
Löschen mußt du garnichts und exportieren nur dann wenn du das direkt in die DLL einbauen willst.

Zitat von EWeiss:
Das soll dann gelöscht werden
Delphi-Quellcode:
function BASS_WINAMPVIS_ExecuteVis(PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean): HVIS; stdcall; external TheDll;
function BASS_SONIQUEVIS_CreateVis(f, visconfig:PChar; flags, w, h: DWORD):HVIS; stdcall; external TheDll;
function BASS_WMPVIS_ExecuteVis(PlgListIndex: Integer; PresetIndex: Integer; VisWinhandle: DWORD; Left, Top, width, heigth: Integer): HVIS; stdcall; external TheDll;
Nein. Die brauchst du ja, da sie aus der DLL kommen.

Zitat von EWeiss:
Also eine Funktion für drei.

Aber alle Funktionen der verschiedenen Typen mit obiger procedure ausführbar sein.
Nicht ganz. Ich kapsle drei Funktionen über einen Funktionsaufruf. Damit braucht sich
der Anwender keinen Kopf machen, welche Funktion er denn für ein Plugin er nun aufrufen muß,
da es immer die gleiche ist

Zitat von EWeiss:
Ich müßte sie dann so umschreiben wie diese
BASSVIS_ExecuteVis(Kind: BASSVIS_KIND_T; PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean):HVIS; stdcall;
Nein, brauchst du nicht. Der Parameter KIND wird ja beim INIT-Aufruf bereits angegeben (und intern gespeichert). Analog dazu HVIS, da immer nur ein Plugin aktiv sein kann. Die restlichen Parameter
stecken im Record. Die globalisierte Funktion geht jetzt her, und ruft die internen Funktionen (die aus der DLL) mit den entsprechenden Parametern aus dem Record und ggf. den intern gespeicherten Informationen auf.

Man könnte auch sagen, das du eine gemeinsame Zugriffsschicht über deine DLL-Funktionen legst.

Btw. In welcher Sprache ist eigentlich die DLL geschrieben ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat