Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Neustrukturierung einer DLL (https://www.delphipraxis.net/95353-neustrukturierung-einer-dll.html)

Ghostwalker 7. Jul 2007 12:18

Re: Neustrukturierung einer DLL
 
Wie du die Konstante benennst bleibt vollkommen dir überlassen. Den Namen hab ich mir einfach mal so ausgedacht. :)

EWeiss 7. Jul 2007 12:30

Re: Neustrukturierung einer DLL
 
Zitat:

Zitat von Ghostwalker
Wie du die Konstante benennst bleibt vollkommen dir überlassen. Den Namen hab ich mir einfach mal so ausgedacht. :)

Ah so gut ;) :-D
Werd vom fortschritt berichten.

Wenn du interesse hast kann ich dir demnächst mal den QuellText von BassVis schicken aber
Achtung:
Dieser ist kein OpenSource und darf in keiner weise öffentlich gemacht werden.
Muss aber erst mal noch was dran tun :-D

Benötige irgendwann einen Nachfolger denn so Jung bin ich auch nicht mehr .. :-D :-D :oops:

gruss Emil

EWeiss 7. Jul 2007 16:33

Re: Neustrukturierung einer DLL
 
Habe da noch ein verständnis problem

Du schreibst
Delphi-Quellcode:
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.

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;
Also eine Funktion für drei.

Aber alle Funktionen der verschiedenen Typen mit obiger procedure ausführbar sein.
Denke dann mal das diese so nicht bleiben kann.

Ich müßte sie dann so umschreiben wie diese
Delphi-Quellcode:
BASSVIS_ExecuteVis(Kind: BASSVIS_KIND_T; PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean):HVIS; stdcall;
und intern die Originale function umbenennen eg..
ExecuteWinampVis(PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean): HVIS;

kann dann beim vergleich wenn der Type(Kind) Winamp ist
Delphi-Quellcode:
BASSVIS_ExecuteVis(Kind: BASSVIS_KIND_T; PluginName: PChar; moduleNum: integer; ownHdc: boolean; ownHdcW2: boolean):HVIS; stdcall;
begin
  case Kind of
    BASSVISKIND_WINAMP:
      Result := ExecuteWinampVis(PluginName, moduleNum, ownHdc, ownHdcW2)
    BASSVISKIND_SONIQUE:
      Result := CreateVis(...
    BASSVISKIND_WMP.
      Result := ExecuteWMPVis(...
  else
    Result := 0;
  end;
end;
in die umbenannte/alte function springen
Anders gehts glaube ich nicht.

gruss Emil

Ghostwalker 7. Jul 2007 16:58

Re: Neustrukturierung einer DLL
 
Zitat:

Zitat von EWeiss
Habe da noch ein verständnis problem

Du schreibst
Delphi-Quellcode:
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:

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:

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:

Zitat von EWeiss
Ich müßte sie dann so umschreiben wie diese
Delphi-Quellcode:
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 ?

EWeiss 7. Jul 2007 17:10

Re: Neustrukturierung einer DLL
 
Ich sage ja wir haben ein verständnis Problem ;)
Zitat:

Löschen mußt du garnichts und exportieren nur dann wenn du das direkt in die DLL einbauen willst.
Das ist alles in der DLL
Ich befinde mich in der DLL und will diese Funktionen aus der DLL exportieren.

Delphi-Quellcode:
Nein. Die brauchst du ja, da sie aus der DLL kommen.
Also ich bin in der DLL und brauche davon nix mehr da alle funktionen als eine einzige aus der DLL
exportiert werden sollen.

Die DLL ist in Delphi geschrieben. ;)

gruss Emil

Ghostwalker 7. Jul 2007 17:14

Re: Neustrukturierung einer DLL
 
Ok...könntest du mir mal den DLL-Code zukommen lassen. Sonst kommen wir glaub ich auf keinen grünen Zweig (mein ICQ läuft :))

EWeiss 7. Jul 2007 17:24

Re: Neustrukturierung einer DLL
 
Zitat:

Zitat von Ghostwalker
Ok...könntest du mir mal den DLL-Code zukommen lassen. Sonst kommen wir glaub ich auf keinen grünen Zweig (mein ICQ läuft :))

Muss erst zusammen suchen ;)
Und du müßtest mir garantieren ihn in keiner weise zu veröffentlichen ;)

Den rest können wir dann über ICQ besprechen.

gruss Emil

Ghostwalker 7. Jul 2007 17:27

Re: Neustrukturierung einer DLL
 
Veröffentlichen werde ich ihn (den Source) garantiert nicht. :) Dafür bin ich zu ehrlich :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz