Also, ich werde mal versuchen das Problem etwas genauer zu erläutern:
Ich habe folgende Prozedur, die funktioniert, wenn ich auf den entsprechenden
Button klicke:
Code:
procedure TForm2.SpeedButton3Click(Sender: TObject);
var tag : TID3Tag;
begin
If Form1.IsPlaying = 'Paused' then Form1.ResumeBass
else
begin
UserStop:=False;
Form1.StopBass;
//- LCD löschen -
ClearDisplay;
Count:=0;
PlayRahmen;
//- markierten Track abspielen -
CurrentTrack := ListView1.Selected.SubItems.Strings[0];
Form1.PlayFile(CurrentTrack);
//- Titel und Interpret auf dem LCD ausgeben
Tag := TID3Tag.Create;
PlayMode( Tag.Interpret(CurrentTrack), Tag.Titel(CurrentTrack) );
Tag.Free;
end;
end;
Hier ist die TClientSocket-Methode, der Client verbindet mit einem WinLIRC Server,
damit eine IR-Fernbedienung für den mp3-Player genutzt werden kann:
Code:
procedure TForm2.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var s,t:string;
i:integer;
partbeg,partend:integer;
params:array[1..4] of string;
begin
s := socket.ReceiveText;
partbeg := 0;
partend := 0;
t:=s;
for i := 1 to 3 do begin
partend := Pos(' ', t);
params[i] := Copy(t, 1, partend - 1);
Delete(t, 1, partend);
end;
params[4] := t;
delete(params[4],length(params[4]),1);
//-- Cursor-Tasten --
if ( Uppercase(params[3]) = 'VOL_DOWN') and (params[2] = '01') then
SendMessage(ListView1.Handle, WM_KEYDOWN, VK_DOWN, 0);
if ( Uppercase(params[3]) = 'VOL_UP') and (params[2] = '01') then
SendMessage(ListView1.Handle, WM_KEYDOWN, VK_UP, 0);
if ( Uppercase(params[3]) = 'NEXT') and (params[2] = '01') then
SendMessage(ListView1.Handle, WM_KEYDOWN, VK_RIGHT, 0);
if ( Uppercase(params[3]) = 'PREVIOUS') and (params[2] = '01') then
SendMessage(ListView1.Handle, WM_KEYDOWN, VK_RIGHT, 0);
if ( Uppercase(params[3]) = 'PAUSE') and (params[2] = '01') then
SpeedButton2.Click;
//-- Stop --
if ( Uppercase(params[3]) = 'STOP') and (params[2] = '01') then
Begin
UserStop := True;
SpeedButton1.Click;
End;
//-- Play --
if ( Uppercase(params[3]) = 'PLAY') and (params[2] = '01') then
begin
UserStop:=False;
SpeedButton3.Click;
end;
end;
Wenn ich also den SpeedButton anklicke wird der korrekte Titel abgespielt.
Wird aber die Taste 'PLAY' auf der Fernbedienung gedrückt wird ein falscher
Titel abgespielt (also nicht der markierte) obwohl ja eigentlich genau das
gleiche geschehen müsste wie wenn ich den Button anklicke!
An der Fernbedienung u.s.w. kann es nicht liegen, da ansonsten alles funktioniert
(Cursortasten, Stop...).
Kann's einfach nicht verstehn