Læse fra Resourcefil og afspille wave og mp3
Hej,Jeg har nedenfor viste 2 koder, hvor jeg forsøger at aflæse res filen, jeg har oprettet og afspille henholdsvis en wave fil og en mp3 fil.
Min rc fil så ud som følgende inden jeg lavede en res fil:
Clock WAVE "C:\Users\Anja\My Documents\Koder til Internet Applikationer\Delphi\md2005code\md2005code\04\AbstractAnimalsNET\cat.wav"
MailBeep WAVE "c:\windows\media\notify.wav"
Cool AVI cool.avi
Intro RCDATA SleepAway.mp3
Når jeg forsøger at afkode og afspille wavefilen sker der intet (heller ingen fejl meddelelser). Jeg har forsøgt at gå ind med "run to curser" og forskellen fra at afspille wave filen direkte (i min udkommenteret linje) er at den sætter et tal ind i Song variablen... Skal den sætte et nummer ind (når den aflæser resourcen) eller er det teksten - hvis det er det sidste - hvor fejler jeg i min kode?
Når jeg forsøger at afkode og afspille mp3 filen, får jeg følgende fejl:
External exception C0000008 (som jeg kan google mig frem til betyder, jeg har givet en invalid handle)...Men så står jeg også af - hvad og hvor er det jeg gør noget forkert i koden?
mvh
simsen :-)
Mine koder:
procedure TForm1.Button1Click(Sender: TObject);
var
hFind, hRes: THandle;
Song : PChar;
begin
hFind := FindResource(HInstance, 'MailBeep', 'WAVE');
if hFind <> 0 then
begin
hRes := LoadResource(Hinstance, hFind);
if hRes <> 0 then
begin
Song := LockResource(hRes);
if Assigned(Song) then PlaySound(Song, 0, snd_Async OR snd_NODEFAULT);
UnlockResource(hRes);
end;
FreeREsource(hFind);
end;
//PlaySound('c:\windows\media\notify.wav', 0, snd_Async OR snd_NODEFAULT)
end;
procedure TForm1.Button2Click(Sender: TObject);
var
rStream: TResourceStream;
fStream: TFileStream;
fname : string;
begin
//Extracts mp3 from exe
fname := ExtractFileDir(Paramstr(0)) + 'SleepAway.mp3';
rStream := TResourceStream.Create(hInstance, 'Intro', RT_RCDATA);
try
fStream := TFileStream.Create(fname, fmCreate);
try
fStream.CopyFrom(rStream, 0);
finally
fStream.Free
end;
finally
fStream.Free
end;
//Play mp3
MediaPlayer1.Close;
MediaPlayer1.FileName := fname;
MediaPlayer1.Open;
MediaPlayer1.Play;
{MediaPlayer1.Close;
MediaPlayer1.FileName := 'SleepAway.mp3';
MediaPlayer1.Open;
MediaPlayer1.Play;}
end;