Zitat von
SirThornberry:
Ob isMultiThread einen Einfluss darauf hat weiß ich nicht, sollte aber nicht wenn es in einem extra Modul steckt.
Und Fehler unterdrücken ist der falsche Ansatz. Eine Zugriffsverletzung kommt schließlich weil an einer falschen Speicheradresse auf Speicher zugegriffen werden soll. Im Schlimmsten fall kommt also mal keine Zugriffsverletzung und Speicher wird an falschen Stellen gelesen oder geschrieben. Es gilt also - Fehler finden!
Jo ist wohl der sinnvollste weg..
Nur konnte bisher keinen finden bei mir läuft das durch ohne zicken.
Vielleicht die compileroption zu stark eingestellt bei den anderen...
Hmm versteh das nicht!
Das wäre vielleicht mein ansatz gewesen.
Delphi-Quellcode:
procedure LibraryProc(Reason: integer);
begin
case (Reason) of
DLL_PROCESS_ATTACH:
begin
BassHandle := LoadLibrary('bass.dll');
if (BassHandle = 0) then
begin
MessageBox(0, 'Unable to load ''bass.dll''' + #13#10 + 'Halting the library process', 'Fatal Error!!', MB_ICONERROR);
ExitCode := 1;
Exit;
end;
BassFuncs := GetProcAddress(BassHandle, '_');
if (BassFuncs = nil) then
begin
FreeLibrary(BassHandle);
BassHandle := 0;
MessageBox(0, 'Unable to load add-on functions from ''bass.dll''' + #13#10 + 'Halting the library process', 'Fatal Error!!', MB_ICONERROR);
ExitCode := 1;
Exit;
end;
System.IsMultiThread := true;
Saved8087CW := Default8087CW;
Set8087CW($133f);
end;
DLL_PROCESS_DETACH:
begin
if (BassHandle <> 0) then
begin
FreeLibrary(BassHandle);
BassHandle := 0;
end;
if (FindPluginsPtr <> nil) then
StrDispose(FindPluginsPtr);
Set8087CW(Saved8087CW)
end;
end;
end;
um den Fehler der meistens hier auftritt wie berichtet zu umgehen..
Delphi-Quellcode:
function BASS_VIS_FindPlugins(vispath: PChar; flags: DWORD): PChar; stdcall;
var
fPath: PChar;
i, z: Integer;
Plugins: String;
DllHandle: THandle;
VisList: TStringList;
sSonique, sWinamp, fRecursive: Boolean;
procedure SearchDir(const dPath: String);
var
x: Integer;
sRec: TSearchRec;
begin
if (sSonique) then
begin
x := FindFirst(dPath + '*.svp', faAnyFile, sRec);
while (x = 0) do
begin
if (FileExists(dPath + sRec.Name)) then
VisList.Add(dPath + sRec.Name);
x := FindNext(sRec); .....
Nur wie gesagt bei mir tritt keiner auf.
Auch unter D7 nicht.
gruss Emil