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
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