Einzelnen Beitrag anzeigen

Robert Marquardt
(Gast)

n/a Beiträge
 
#11

Re: Neustrukturierung einer DLL

  Alt 6. Jul 2007, 07:26
Der Nachteil einer Enumeration ist das bei Delphi nur ein Byte fuer den Typ genommen wird, waehrend C 4 Bytes nimmt. Bleibt man bei einfachen Konstanten und nimmt Integer als Typ fuer den Parameter so erspart man sich die Probleme mit der Groesse des Typs.
Es heisst uebrigens in englisch nicht "type" sondern "kind" (Art). Das ist ein beliebter Fehler bei der Namensgebung.
Delphi-Quellcode:
const
  BASSVISKIND_SONIQUE = 1;
  BASSVISKIND_WINAMP = 2;
  BASSVISKIND_WMP = 3;
type
  BASSVIS_KIND_T = Integer;
Code:
#define BASSVIS_SONIQUE 1
#define BASSVIS_WINAMP 2
#define BASSVIS_WMP    3

typedef int BASSVIS_KIND_T;
Zur Abstraktion sollte man uebrigens alles mit eigenen Typen versehen. Das bewirkt das die Programme in allen Sprachen aehnlicher aussehen. Die jeweilige Header-Datei mappt dann die Typen auf passende Basistypen.

So jetzt zu der Idee des Supersets. Die APIs haben nicht so viel Ueberschneidung. Das sollte man erst mal aufarbeiten.
Ein Beispiel waere dies:
Delphi-Quellcode:
procedure BASSVIS_Play(Kind: BASSVIS_KIND_T; Handle: HVIS); stdcall;
begin
  case Kind of
    BASSVISKIND_SONIQUE:
      { nichts zu tun };
    BASSVIS_WINAMP:
      BASS_WINAMPVIS_Play(Handle);
    BASSVIS_WMP:
      BASS_WMPVIS_Play;
  end;
end;
Das ist jetzt nur die grobe Richtung in der es gehen soll. Das API muss noch deutlich vereinheitlicht werden.
  Mit Zitat antworten Zitat