Thema: Delphi bass_fx dynamisch laden?

Einzelnen Beitrag anzeigen

Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#1

bass_fx dynamisch laden?

  Alt 2. Feb 2008, 16:17
Hallo Listers,
ich kriege jetzt auf der Stelle einen Weinkrampf!
also: ich brauche die BASS_FX.Dll. Dazu gibt's, für Delphi, aber nur eine Unit, in der die Statisch geladen wird. Pfui-Deiwel.
Jetzt hab ich alles umgeschrieben, und folgendes kam dabei heraus:
Code:
...
Function Load_BASSFXDLL (const dllfilename:string) :boolean;
const szBassFXDll = 'bass_fx.dll' + #0;
var
  oldmode:integer;
  P: PChar;
  s: string;
  dllfile: array[0..MAX_PATH + 1] of Char;
begin
  Result := False;
  if BASS_FX_Handle<>0 then result:=true {is it already there ?}
  else begin {go & load the dll}
    s := dllfilename;
    if Length(s) = 0 then begin
      P := nil;
      if SearchPath(nil, PChar(szBassFXDll), nil, MAX_PATH, dllfile, P) > 0 then
        s := StrPas(dllfile)
      else exit;
      end;
    oldmode:=SetErrorMode($8001);
    s := s + #0;
    BASS_FX_Handle:=LoadLibrary(pchar(s)); // obtain the handle we want
    SetErrorMode(oldmode);
    if BASS_FX_Handle<>0 then
       begin {now we tie the functions to the VARs from above}
...
der ganze Kram ist aus Dynamic_Bass übernommen.
Das es mit dem DLLLoader nicht klappt, soweit bin ich auch schon, obwohl das die sinnigste Lösung, für mich, gewesen wäre.
Rufe ich aber die funktion
Code:
Load_BASSFXDll
auf, kommt bei
Code:
    BASS_FX_Handle:=LoadLibrary(pchar(s)); // obtain the handle we want
0 heraus. Für eine andere DLL klappt das verfahren ganz wunderbar.
Kann man diese unglaublich DLL denn nicht dynamisch linken? Und wenn man das nicht kann, hat mir wer 'nen tip, wie ich diese Windows-Meldungen mit "komponente nicht da"... bei Programmstart abfange, wenn die DLL nicht da ist?
Verzweifelte Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat