du bekommst einen Runtime Error? Krass. Normalerweise gibt das Systemprotokoll von mAirlist einen genauen Fehlercode aus. Diesen wäre gut zu kennen, um das Problem zu lösen.
Hast du denn das zweite end; in deinem Script gesetzt? Schließlich öffnest du mit zwei begin.
Ich kann dir noch nicht folgen. Kannst du evtl. das ganze Script posten und den Fehlercode des Systemprotokolls angeben?
psPaused und psEmpty klappt also bei dir nicht. Den Zusammenhang mit deiner angemerkten If-Bedingung verstehe ich noch nicht ganz. Was meinst du damit?
Ja, bitte! Bei der Skripterei kommt es auf einzelne Kommata an, daher ist es unmöglich, aus ein paar solitären Zeilen Schlüsse zu ziehen. Wichtig auch das, was Du als Ausführung bezeichnest, denn ein Runtime Error tritt dann auf, wenn der Code zwar die Syntaxprüfung besteht, dann aber etwas tun soll, was per se nicht geht. Und da er ja in Pause etwas anderes tun soll als in Play, kann es auch daran liegen.
Also: Ohne das ganze Skript kommen wir hier nicht weiter.
Danke bis jetzt für die Hilfe, eigentlich seht ihr schon das ganze Script bis auf die Ausführung.
aber hier nochmal alles:
procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue);
begin
if (PlayList(0).GetPlayer(0).GetState = psPaused) then begin
K8055Remote(0).SetDigitalChannel(8);
sleep(1500);
K8055Remote(0).ClearDigitalChannel(2);
end;
end;
Das ist im Systemprotokoll:
23.12.2019 13:51:09 Fehler Runtime error “List index out of bounds (5196341)” in background script C:\mairlist-scripte\led-pause.mls, handling message: PLAYERCONTROL_STOP 02C1623A2E455727 00 00000000 00000000 6,396 ?
Hab soeben eine Lösung gefunden, das Script funktioniert, ich sitze nun daran eine endlosschleife zu machen, aber delphi ist nicht meins, ich kenne mich eher mit BASH aus.
Würde es dir was ausmachen, deine Scripte in Code zu formatieren?
Liest sich leichter.
Das Symbol </> in der Leiste des Edit-Fensters ist da hilfreich.
Beispiel aus einem anderen Beitrag von dir:
procedure OnPlayerStop(PlaylistIndex: integer; PlayerIndex: integer; Duration: TTimeValue);
begin
if (PlayList(0).GetPlayer(0).GetState = psPaused) then begin
K8055Remote(0).SetDigitalChannel(8);
sleep(1500);
K8055Remote(0).ClearDigitalChannel(2);
end;
end;
Ich muss das Thema mit einer schleife nochmal aufgreifen,
leider geht es nicht wie erhofft.
if (NewState = psPaused) then
begin
while not (NewState = psPlaying) or (NewState = psStopped) do
begin
K8055Remote(0).SetDigitalChannel(3);
K8055Remote(0).ClearDigitalChannel(1);
K8055Remote(0).ClearDigitalChannel(2);
sleep(250);
K8055Remote(0).ClearDigitalChannel(3);
sleep(250);
end;
end;
Hier Verennt er sich in einer Dauerschleife und kommt nicht mehr raus.
wie kann ich das lösen?