AGB  ·  Datenschutz  ·  Impressum  







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

Neustrukturierung einer DLL

Ein Thema von EWeiss · begonnen am 5. Jul 2007 · letzter Beitrag vom 7. Jul 2007
Antwort Antwort
Ghostwalker

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

Re: Neustrukturierung einer DLL

  Alt 7. Jul 2007, 06:02
Zitat:
Geht nicht HVIS muss nach außen freigegeben werden.
Ist das VisHandle und wird von der Anwendung zur kontrolle über die Plugins benötigt.
Dann muss ich die ganze Lib umschreiben da zig Functionen diesen Parameter verwenden.
Die Kontrolle der Plugins läuft ja ebenfalls über deine API. In dem du einen "Satz" Funktionen schreibst (Also nicht für jeden Plugintyp die Funktionen, sondern für alle Plugintypen die gleiche Funktionen), kannst du dir das rausgeben von HVIS sparen. Die Plugin-Unabhängigen Funktionen gibst du nach außen (exportierst du). Diese Funktionen machen nix anderes als deine Plugin-Abhängigen Funktionen aufzurufen. Da du intern weißt, welchen Plugintyp gerade aktiv ist und welches Handle das ist, brauchst du das nicht nach außen geben.

Du legst also, wie Robert schon vorgeschlagen hat, ein Superset der Pluginfunktionen an, das du exportierst. Dieses Superset wird exportiert (statt der bisherigen funktionen) und leitet letztendlich
alles an die entsprechenden Pluginfunktionen weiter.

Beispiel:

In der DLL:

Delphi-Quellcode:
   Procedure BASSVIS_PLAY; //diese Funktion wird exportiert !
   begin
     case globalkind of
        BASSVISKIND_SONIQUE:
           { nichts zu tun , da es keine Entsprechung für Sonique gibt};
        BASSVIS_WINAMP:
            BASS_WINAMPVIS_Play(globalHVIS);
         BASSVIS_WMP:
          BASS_WMPVIS_Play;
      end;
   end;
   :
   Procedure BASS_WINAMPVIS_Play(handle:HVIS); //wird nicht mehr exportiert !
   begin
     :
   END;
In der Anwendung:

Delphi-Quellcode:
   procedure DoxyzClick(Sender:TObject);
   begin
     if (BASSVIS_INIT(BASSVIS_WINAMP,HInstance,application.handle)) then
         BASSVIS_PLAY;
   end;
Damit vereinfachst du das Interface deiner API, ohne eben die komplette Funktionalität neu zu schreiben

Ideal wäre es natürlich, das gleich in der DLL so zu machen. Damit sparst du dir dann Tipparbeit in den Interface-Deklarationen für die jeweiligen Sprachen
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:44 Uhr.
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 by Thomas Breitkreuz