Seite 1 von 1

BASS.dll Fehler [gelöst]

Verfasst: 11.10.2014 00:54
von gem
Guten Abend

Leider funktioniert das simple Programm bei mir nicht. Die Anwendung stürzt bei der Funktion BASS_StreamCreateFile ohne Fehlermeldung ab.
Die bass.pbi habe ich auch verwendet allerdings ohne Erfolg.
Dort scheint die Funktion BASS_StreamCreateFile auch nicht richtig zu funktionieren.
Wäre cool wenn jemand eine Idee hat woran das liegen könnte

Schöne Grüße
Gabriel

BASS.dll
http://www.un4seen.com/

Code: Alles auswählen

basslib = 1

filename.s = "example.mp3"

If OpenLibrary(basslib,"bass.dll")
	CallFunction(basslib,"BASS_Init",-1,44100,0,0,0)
	
	CallFunction(basslib,"BASS_StreamCreateFile",0,@filename,0,0,0)

	CallFunction(basslib,"BASS_Free")
	
	CloseLibrary(basslib)
EndIf

Re: BASS.dll Fehler

Verfasst: 11.10.2014 03:03
von STARGÅTE
BASS_StreamCreateFile kann in deinem Fall auch nicht funktionieren, weil in der Dokumentation steht:

Code: Alles auswählen

HSTREAM BASS_StreamCreateFile(
    BOOL mem,
    void *file,
    QWORD offset,
    QWORD length,
    DWORD flags
);
Das heißt, der 3 und 4 Parameter muss eine Quad sein, was mit CallFunction() aber nicht verwendet werden kann:
Hinweis: Diese Funktion ist nicht sehr flexibel und kann nicht mit String/Fließkomma/Double/Quad-Parametern oder String/Fließkomma/Double/Quad-Rückgabewerten umgehen. Die Verwendung von Prototypen ist stattdessen sehr zu empfehlen.
Das wird sicher für andere Funktionen ebenfalls zutreffen. Daher lieber mit Prototype arbeiten:

Code: Alles auswählen

Prototype BASS_StreamCreateFile(mem.i, *file, offset.q, length.q, flags.l) ; falls BOOL mit .i übersetzt werden darf.
und dann:

Code: Alles auswählen

BASS_StreamCreateFile.BASS_StreamCreateFile = LibraryFunctionAddress(basslib, ,"BASS_StreamCreateFile")
BASS_StreamCreateFile(0,@filename,0,0,0)

Re: BASS.dll Fehler

Verfasst: 11.10.2014 08:37
von ts-soft
STARGÅTE hat geschrieben: und dann:

Code: Alles auswählen

BASS_StreamCreateFile.BASS_StreamCreateFile = LibraryFunctionAddress(basslib, ,"BASS_StreamCreateFile")

Code: Alles auswählen

BASS_StreamCreateFile.BASS_StreamCreateFile = GetFunction(basslib, ,"BASS_StreamCreateFile")
:wink:

Re: BASS.dll Fehler

Verfasst: 11.10.2014 08:56
von Bisonte
ts-soft hat geschrieben:
STARGÅTE hat geschrieben: und dann:

Code: Alles auswählen

BASS_StreamCreateFile.BASS_StreamCreateFile = LibraryFunctionAddress(basslib, ,"BASS_StreamCreateFile")

Code: Alles auswählen

BASS_StreamCreateFile.BASS_StreamCreateFile = GetFunction(basslib, ,"BASS_StreamCreateFile")
:wink:
und ihr meint beide wohl

Code: Alles auswählen

BASS_StreamCreateFile.BASS_StreamCreateFile = GetFunction(basslib, "BASS_StreamCreateFile")
Wie sich ein Copy-Fehler selbstständig machte .... :roll:

Re: BASS.dll Fehler

Verfasst: 11.10.2014 09:50
von ts-soft
:lol:

Re: BASS.dll Fehler

Verfasst: 11.10.2014 13:18
von STARGÅTE
Ja das kommt davon wenn man Antworten schreibt ohne es in PureBasic zu schreiben/testen.

Re: BASS.dll Fehler

Verfasst: 11.10.2014 13:48
von gem
Vielen Dank hat wunderbar geklappt.
und mal wieder was dazu gelernt ;)

PS: Bin seit kurzem hier und muss sagen das ist ein richtiges gutes Forum.