Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi bass_fx dynamisch laden? (https://www.delphipraxis.net/107809-bass_fx-dynamisch-laden.html)

Marco Steinebach 2. Feb 2008 15:17


bass_fx dynamisch laden?
 
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

EWeiss 2. Feb 2008 15:58

Re: bass_fx dynamisch laden?
 
Es gibt eine Seite mit einer unit BassFX_Dynamic.pas
http://members.aol.com/wtgdana/private/Bass/

wirst aber umschreiben müssen da für eine ältere Version von BassFx

Marco Steinebach 3. Feb 2008 11:55

Re: bass_fx dynamisch laden?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Zitat:

Zitat von EWeiss
Es gibt eine Seite mit einer unit BassFX_Dynamic.pas
http://members.aol.com/wtgdana/private/Bass/

wirst aber umschreiben müssen da für eine ältere Version von BassFx

Ha! Vielen Dank. Ich hab sie nicht umgeschrieben, sondern neu gemacht. Der entscheidende Tip, aus dieser Unit, war, daß erst die BASS.DLL geladen sein muß, bevor man die BASS_FX.DLL laden kann. Beides geht dünamisch ganz wunderbar.
Ich hänge, für alle, die sich die Schreibarbeit sparen wollen, die Unit Dynamic_BASS_FX hier dran. Sie basiert auf der Version 2.3.03, ist also ganz aktuell.
Und denkt dran: erst bass.dll dann bass_fx.dll. ;-)
Viele Grüße
Marco


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 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-2025 by Thomas Breitkreuz