AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi BASS_StreamCreateFile: Access violation
Thema durchsuchen
Ansicht
Themen-Optionen

BASS_StreamCreateFile: Access violation

Ein Thema von 64Jabor · begonnen am 20. Apr 2008 · letzter Beitrag vom 26. Apr 2008
Antwort Antwort
Seite 1 von 3  1 23      
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#1

BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 13:08
Hallo DP,

DIESER
Delphi-Quellcode:
BASS_channelstop(Channel);
Channel := BASS_StreamCreateFile(FALSE, PChar(PlayList.strings[SongNumber]), 0, 0, 0);
BASS_ChannelPlay(Channel, False);
Code bereitet mir jedesmal einen AccessViolation!
Ich nutze hier die BASS.dll, habe sie im FormCreate mit
BASS_Init(-1, 44100, 0, Application.Handle, nil); initialisiert, und versuche per Timer aus dem spielenden Channel die FFTData zu nutzen.
Aber an der Stelle BASS_StreamCreateFile... bekomme ich immer den Access violation mit Assembler-Code...

Ideen?

mfg Sebi
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 13:20
Was sagt denn die Definition von BASS_StreamCreateFile ?
Welche parameter werden da übergeben.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 14:35
Ich glaube du musst den Channel erst freigeben, bevor du einen neuen Lädst.
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#4

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 14:45
@emil

function BASS_StreamCreateFile(mem: BOOL; f: Pointer; offset, length: QWORD; flags: DWORD): HSTREAM; stdcall; external bassdll; So sieht die function BASS_StreamCreateFile in der "bass.pas" aus,
wobei ich DAS
Zitat:
mem - TRUE = stream the file from memory.
file - Filename (mem = FALSE) or a memory location (mem = TRUE).
offset - File offset to begin streaming from (only used if mem = FALSE).
length - Data length... 0 = use all data up to the end of the file (if mem = FALSE).
flags - Any combination of these flags.
in der "Hilfe" gefunden habe!
Aber vielleicht liegt es ja auch gar nicht an StreamCreateFile denn es ist ja öfter so dass IDEs den Fehler in der nächsten, und somit falschen, Zeile anzeigen...

@nico
Hmm, ok, das werde ich mal veruschen, geht wahrscheinlich per
BASS_StreamFree(...); oder wie?

mfg Sebi
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#5

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 14:48
Also, schnell noch hinterherschieben ^^

Wenn
BASS_StreamFree(Channel); richtig ist, dann bringt es leider nichts...
Channel ist in dem Fall ja mein Handle, da definiert als DWORD.

mfg Sebi
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 14:57
Überprüfe doch mal ob der Stream überhaupt geöffnet wird.
Delphi-Quellcode:
if Channel<>0 then
   if not BASS_ChannelPlay(Channel, True) then
      Error('Error playing stream!')
   else
else
   Error('Error opening stream!');
Ansonsten könnte es sein das es hiemit "PlayList.strings[SongNumber]" Probleme gibt?
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#7

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 15:10
Also, hier mal ein Codeausschnitt:

Delphi-Quellcode:
procedure TJP.PlaySong(SongNumber: integer);
var SongSecTime: String;
begin
if (fileexists(PlayList.Strings[SongNumber])) then //existierender Song ->
 begin
  BassPlayer.LoadFromFile(PlayList.Strings[SongNumber]); //Lied laden in DLLPlayer
  BassPlayer.Play; //und abspielen
  BASS_channelstop(Channel); //Channel ggf. stoppen
  if Channel<>0 then //Error-Blockade (siehe unten im Beitrag)
   if not BASS_ChannelPlay(Channel, True) then SHowMessage('Error playing stream!')
   else
  else SHowMessage('Error opening stream!');
  Channel := BASS_StreamCreateFile(FALSE, PChar(PlayList.strings[SongNumber]), 0, 0, 0); {Hier kommt der tolle Error}
  SongBalken.Max := BassPlayer.SongLength; //Trackbar anpassen
  SongBalken.position := 0; //und resetten
  lbSongTimeMax.Caption := IntToStr(BassPlayer.SongLength div 60); //Liedzeiten in Label schreiben
  if (BassPlayer.SongLength div 60 < 10) then lbSongTimeMax.caption := '0' + lbSongTimeMax.caption;
  SongSecTime := IntToStr(BassPlayer.SongLength mod 60);
  if (BassPlayer.SongLength mod 60 < 10) then SongSecTime := '0' + SongSecTime;
  lbSongTimeMax.Caption := lbSongTimeMax.caption + ':' + SongSecTime;
 end
else ShowMessage('Ungültige Datei!'); //andernfalls ungültige Datei melden!
end;
Das ist die Prozedur die jedesmal aufgerufen wird, wenn ein SOng gespielt werden soll!
Bereits vorher ist die Bass.dll per

BASS_Init(-1, 44100, 0, Application.Handle, nil); initialisiert.
BassPlayer ist ein TBassDLLPlayer, wo ich den herhab weiß ich ehrlich nicht mehr, aber er funktioniert sehr gut!
Hier in der Prozedur sieht man dass ich umsteigen möchte vom TBassDLLPlayer auf die BASS.dll weil mit dem DLLPlayer keine Visualisierung möglich ist!
So habe ich 2 getrennte Systeme - den BassPlayer und die Bass.dll - natürlich nur vorrübergehend, damit ich jederzeit abbrechen kann und in mein altes Schema verfallen kann - sollte es nicht funktionieren (Nachteil: 2 verscheidene gleichzeitig gespielte Lieder ^^).

Der oberste Code macht SO keinen Sinn, da der "Error" kommen MUSS!
Aber wenn ich den if-Teil UNTER die Zuweisung des Channel verlege, bekomme ich meinen hübschen Assembler-Code-Error sofort, HIER erst nach dem Klick auf "OK" der "ShowMessage".
Somit muss der Fehler in dieser Zuweisung liegen, wie seht ihr das?

mfg Sebi
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#8

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 15:16
Vielleicht bringt es was:
Wenn ich das Programm statt in der IDE ganz normale als EXE laufen lasse, geht es einfach aus - wobei das zu erwarten war ^^

mfg Sebi
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: BASS_StreamCreateFile: Access violation

  Alt 20. Apr 2008, 15:29
Mhhh... ich könnte mir vorstellen, dass der Fehler kommt weil der TBassPlayer auf die selbe DLL zugreift wie der normale Funtkionsaufruf (der Bassplayer macht ja auch nichts anderes).

Versuche doch mal die BassPlayer sachen auszukommentieren oder einfach den Bassplayer um die Vis zu erweitern.

Könntest du vieleicht auch mal dein Projekt anhängen?
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#10

Re: BASS_StreamCreateFile: Access violation

  Alt 21. Apr 2008, 14:02
@nico
Hmm, die Überlegung ist sehr gut! Das könnte natürlich durchaus sein...

Natürlich kann ich das Projekt mal hier anhängen.
Ich verwende aber neben der TBassDLLPlayer und halt der Bass.pas auch die Komponente AlphaControls LE (Lite) von AlphaControls und noch Ovale Buttons von einer Sammelseite!
Diese beiden Dinge werdet ihr wohl brauchen um den MediaPlayer ganz korrekt laufen zu lassen...

Unten ist dass eine ZIP mit allem, außer den oben genannten Dingen, die ihr aber einfach herunterladen könnt...

Schaut euch den Code bitte an, ist teilweise auskommentiert, aber vieles erklärt sich von selbst - für seinen Programmierer ^^
Wenn ihr irgendwas nicht versteht und euch wundert was ich da für nen Mist mache, dann sagt das ruhig, bin auch für jeden Verbesserungsvorschlag dankbar

mfg Sebi
Angehängte Dateien
Dateityp: zip jplayer_2_896.zip (521,6 KB, 28x aufgerufen)
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz