![]() |
Bass.dll: BASS_GetVersion() -> AV an Adresse 0x00000000
Hi,
ich lade die Bass.dll folgendermaßen:
Delphi-Quellcode:
Diesen IF-Block hab ich in der BassTest abgeschaut, dort wird das genauso gemacht, aber dort funktioniert es. In meinem Code allerdings, erhalte ich folgende Meldung:
if Bass_GetVersion() <> DWORD(MAKELONG(2, 1)) then // Da kommt die Exception
begin Error('BASS.DLL 2.1 nicht geladen!' + #10 + 'Ihre BASS.DLL-Version: %s', [Bass_GetVersion()], EBassLoadError); end;
Code:
Der gesamte Code ist das:
---------------------------
Benachrichtigung über Debugger-Problem --------------------------- Im Projekt E:\Delphi\Meine Programme\Bass-Unit\BassEx.exe sind zu viele aufeinander folgende Exceptions aufgetreten: ''access violation at 0x00000000: read of address 0x00000000''. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. --------------------------- OK Hilfe ---------------------------
Delphi-Quellcode:
Mehr gibt es noch nicht, da ich gerade erst damit angefangen hab.
unit uaudioengine;
interface uses Bass, Windows, SysUtils; type EExceptionClass = class of Exception; EBassLoadError = Exception; TAudioEngine = class private procedure Error(Msg: String; const Arg: array of const; aException: EExceptionClass); public constructor Create(WND: HWND); destructor Destroy; override; end; implementation constructor TAudioEngine.Create(WND: HWND); begin if Bass_GetVersion() <> DWORD(MAKELONG(2, 1)) then begin Error('BASS.DLL 2.1 nicht geladen!' + #10 + 'Ihre BASS.DLL-Version: %s', [Bass_GetVersion()], EBassLoadError); end; end; destructor TAudioEngine.Destroy; begin Bass_Free(); inherited; end; procedure TAudioEngine.Error(Msg: String; const Arg: array of const; aException: EExceptionClass); begin raise aException.CreateFmt(Msg, Arg); end; Ich möchte nun wissen, warum ich diesen Fehler bekomme. [edit2] Die Bass.dll ist im Verzeichnis dieser Unit ;) [/edit2] |
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
Unit (Header) und DLL haben die gleiche Version?
|
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
Muss nicht irgendwo die Ini-Methode in der Bass DLL Delphi Unit aufgerufen werden?
Delphi-Quellcode:
function BASS_Init(device: Integer; freq, flags: DWORD; win: HWND): BOOL; stdcall; external 'bass.dll' name 'BASS_Init';
|
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
Zitat:
ja. Die Bass.Dll-Beispiele lassen sich anstandslos compilieren und funktionieren. [edit] @Michael, doch, aber die Bass_GetVersion()-Methode ruft man vor Bass_Init auf. So ist das in den Beispielen. [edit] [edit2] Ich habs nun auch versucht, erst Bass_Init aufzurufen und dann die Bass_GetVersion()-Methode, aber nun kommt der Fehler bei Bass_Init. [/edit2] |
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
@Spider Starte mal den Rechner neu. (unload event. DLL's)
Habe deinen Code getestet und er ist ok, bis auf:
Delphi-Quellcode:
ändern zu:
if Bass_GetVersion() <> DWORD(MAKELONG(2, 1)) then // Da kommt die Exception
begin Error('BASS.DLL 2.1 nicht geladen!' + #10 + 'Ihre BASS.DLL-Version: %s', [Bass_GetVersion()], EBassLoadError); end;
Delphi-Quellcode:
weil: BASS_GetVersion: DWORD;
if Bass_GetVersion() <> DWORD(MAKELONG(2, 1)) then
begin Error('BASS.DLL 2.1 nicht geladen!' + #10 + 'Ihre BASS.DLL-Version: %d.%d', [LoWord(Bass_GetVersion()),HiWord(Bass_GetVersion())], EBassLoadError); end; |
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
Hi Matti,
dass mit dem PC Neustarten habe ich versucht, aber ich bekomme den Fehler trotzdem. Ich hab es auch nochmal mit einem neuen Projekt versucht, aber dort ist der gleiche Fehler. |
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
Liegt die DLL denn im Anwendungsverzeichnis?
|
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
Liste der Anhänge anzeigen (Anzahl: 1)
Versuch mal die Demo in Anhang, und prüfe deine BASS.DLL (neu downloaden).
Stelle sicher, dass die Bass.pas im Verzeichnis die einzige ist. (nicht das irgend wo noch eine andere event. alte Version vorhanden ist zB. im Delphi Bibliothekspfad) |
Re: Bass.dll: BASS_GetVersion() -> AV an Adresse 0x000000
@Luckie
ja @Matti, danke. Es lag an meiner Bass.pas. Ich hab die bass21.zip von beiden Servern runtergeladen, aber jedesmal ging es nicht. Mit deiner Bass.pas geht es nun. Der Unterschied in den Bass.pas liegt daran, dass manche function in deiner Bass.pas als proceduren deklariert sind. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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