Entwickler-Ecke

Multimedia / Grafik - Bass.dll-wie spielt man lied ab


Leuchtturm - Fr 20.10.06 11:55
Titel: Bass.dll-wie spielt man lied ab
Hi,
ich habe mich mal mit der Bass.dll auseinandergesetzt.
Ich bin aber aus den Demos nicht wirklich schlau geworden :(

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
begin
    BASS_ChannelPlay(strs[i],false);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
begin
 if Opendialog1.Execute then
   begin
     ListBox1.Items.Add(OpenDialog1.FileName);
   end;
end;

Damit öffne und spiele ich den Titel ab.
Startet auch fehlerlos. Der Titel den ich auswähle wird auch in die Listbox eingetragen aber wenn ich den dann auswähle wird der nicht abgespielt :oops:
Leuchtturm


Gausi - Fr 20.10.06 14:59

Bevor man play macht, muss man erst create machen ;-)

So sollte es funktionieren:

Delphi-Quelltext
1:
2:
3:
4:
var aStream: DWord;
//...
  aStream := BASS_StreamCreateFile(False, PChar(aFilename), 000);
  BASS_ChannelPlay(aStream , True);


Leuchtturm - Fr 20.10.06 15:35

als was ist aFileName deklariert :?:

Edit:Habs rausgefunden: PChar :oops:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
var
aFilename: PChar;
i: Integer;
begin
  aStream := BASS_StreamCreateFile(False, PChar(aFileName), 000);
  BASS_ChannelPlay(strs[i] , True);
end;

Hier versuche ich jetzt abzuspielen
Da kommt aber der Fehler:
Fehler hat folgendes geschrieben:
Im Project Project1.exe ist eine Exception der Klasse EAccessViolation mit der Adresse 00457D96 in Modul 'Project1.exe'. Lesen von Adresse 00F60940 aufgetreten
Was bedeutet das nun wieder :gruebel:


jakobwenzel - Fr 20.10.06 15:45

aFilename= ein Dateiname = Name der zu ladenden Datei! (IMHO)


Leuchtturm - Fr 20.10.06 15:50

Ja danke hatte ich jetzt auch schon rausgefunden: siehe Edit oben


Leuchtturm - Fr 20.10.06 15:59

Jetzt funktionierts: habe bloß diese Zeile im OnCreate vergessen:

Delphi-Quelltext
1:
  BASS_Init(-1441000, Application.Handle, nil);