Hi
Hab ein Problem:
Sagen wir mal ich hätte ca. 19 mp,s als Resourcen in meinem Projekt ,die ich mit einem Zufalls Timer im TMediaPlayer wieder geben möchte. Also das nicht nur die Timer Zeit zum abspielen zufällig gewählt wird sondern auch die Mp,3 zufällig gewählt werden. Wie mach ich das? Ich hatte folgenden Code bei dem es leider immer wieder zu bösen fehlern kam:
(Hier als bsp mit nur 2 mp3 resourcen)
//Bitte ein wenig um nachsicht da ich noch neu mit Delphi bin
Delphi-Quellcode:
procedure mp3Eins;
var
rStream: TResourceStream;
fStream: TFileStream;
fname: string;
begin
fname := ExtractFileDir(Paramstr(0))+'test.mp3';
rStream := TResourceStream.Create(hInstance, 'test', RT_RCDATA) ;
try
fStream := TFileStream.Create(fname, fmCreate) ;
try
fStream.CopyFrom(rStream, 0) ;
finally
fStream.Free;
end;
finally
rStream.Free;
end;
MediaPlayer1.Close;
MediaPlayer1.FileName:=fname;
MediaPlayer1.Open;
MediaPlayer1.Play;
end;
procedure mp3Zwei;
var
rStream: TResourceStream;
fStream: TFileStream;
fname: string;
begin
fname := ExtractFileDir(Paramstr(0))+'test2.mp3';
rStream := TResourceStream.Create(hInstance, 'test2', RT_RCDATA) ;
try
fStream := TFileStream.Create(fname, fmCreate) ;
try
fStream.CopyFrom(rStream, 0) ;
finally
fStream.Free;
end;
finally
rStream.Free;
end;
MediaPlayer2.Close;
MediaPlayer2.FileName:=fname;
MediaPlayer2.Open;
MediaPlayer2.Play;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize;
timer1.enabled:=False;
timer1.interval:=Random(100000000);
timer1.enabled:=True;
Label1.Caption := Format('NeXt Action in %d MilliSeconds.', [Timer1.Interval]);
case random(2) of
0: mp3Eins;
1: mp3Zwei;
end;
end;
end.
Warum funktioniert das so einfach nicht? was mache ich falsch?