Skripte funktionieren nicht mehr

Hi Torben,

leider werden meine Skripte nicht mehr ausgeführt (werden über Hotkey ausgelöst). Z.B. dieses Next-Skript:

[code]var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 2 do
if ((CurrentPlaybackControl.GetPlayer(i).GetState = PS_LOADED) or
(CurrentPlaybackControl.GetPlayer(i).GetState = PS_PAUSED))
and
((item = -1) or
(CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(CurrentPlaybackControl.GetPlayer(i).GetItem);
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
CurrentPlaybackControl.PlayerStart(player);
for i := 0 to CurrentPlaybackControl.GetPlayerCount - 2 do
if i <> player then begin
if CurrentPlaybackControl.GetPlayer(i).GetItem <> nil then
CurrentPlaybackControl.GetPlayer(i).GetItem.SetFadeDuration(10000000);
CurrentPlaybackControl.PlayerFadeOut(i);
end;
end;
end.[/code]

bringt folgenden Fehler:

[Fehler] (7:57): Unknown identifier ‘PS_LOADED’

Sonntag, 18. Januar 2009, 16:43:50

Program Version 3.0.0 Build 523

Call stack:

(0032CB18) [0072DB18]
(0028EC00) [0068FC00]
(00216D05) [00617D05]
(0002DFE7) [0042EFE7]
(00080591) [00481591]
(00081258) [00482258]
(0002DEB3) [0042EEB3]
(00066748) [00467748]
(00067C63) [00468C63]
(00068DC2) [00469DC2]
(00068D11) [00469D11]
(0002E688) [0042F688]
(0008ECBC) [0048FCBC]
(0008ECF6) [0048FCF6]
(0008EF16) [0048FF16]
(003A5AAD) [007A6AAD]
(00001F68) [00402F68]
(003A5BB1) [007A6BB1]
(005710B8) [009720B8]
(0057C148) [0097D148]

bei mir auch!!!

noch eine andere frage: der pfl player als screenobject funktioniert noch nicht, oder?!

Da sich die interne Struktur von mAirList bedeutend geändert hat, gibt es auch für Scripts viele kleine und große Sachen, die man anpassen muss. Ich lade gleich mal eine aktuelle chm-Datei hoch, da könnt ihr euch dann durchwühlen.

PS_LOADED heißt jetzt psLoaded.

Ach, ja der. Stimmt. Den hab ich mal irgendwann anfangen zu programmieren, bin aber nicht fertig geworden, wie man sieht. Bitte erstmal ignorieren.

So, Script-Hilfe ab sofort immer hier: http://www.mairlist.com/download/mAirList/v3.0/scriptinghelp/

Sorry, aber ich verstehe nur Bahnhof und das obwohl ich wirklich ein gesundes Computerwissen habe. Darf ich freundlich fragen, ob jemand so nett ist, mir mein Skript zu übersetzen? Das PS_Loaded habe ich ersetzt. Leider funktioniert’s aber immer noch nicht.

[Fehler] (12:1): Type mismatch

Sonntag, 18. Januar 2009, 21:03:55

Program Version 3.0.0 Build 523

Call stack:

(0032CB18) [0072DB18]
(0028EC00) [0068FC00]
(00216D05) [00617D05]
(0002DFE7) [0042EFE7]
(00080591) [00481591]
(00081258) [00482258]
(0002DEB3) [0042EEB3]
(00066748) [00467748]
(00067C63) [00468C63]
(00068DC2) [00469DC2]
(00068D11) [00469D11]
(0002E688) [0042F688]
(0008ECBC) [0048FCBC]
(0008ECF6) [0048FCF6]
(0008EF16) [0048FF16]
(003A5AAD) [007A6AAD]
(00001F68) [00402F68]
(003A5BB1) [007A6BB1]
(005710B8) [009720B8]
(0057C148) [0097D148]

Ich bin ja schon durch die alte Skript-Sprache nicht durchgestiegen…

Sorry, das übersteigt jetzt gerade meinen zeitlichen Horizont. Aber da gibt’s ja noch ein, zwei andere Leute hier, die sich mit dem Gescripte auskennen :wink:

Dass wegen eines Fehlers im Script gleich der Call Stack hochpopt ist übrigens nicht gewollt. Eine einfache Dialogbox tut’s auch. Werde ich mal ändern.

hey. die hilfe datei funktioniert leider nicht. es steht immer " die website kann nicht angezeigt werden" ???

lg mike

Den Fehler kenn ich. Das liegt an den den Sicherheitseinstellungen des Internet Explorers. Dein Windows hat sich gemerkt, dass die CHM-Datei aus dem Web stammt. Und nun weigert sich der eingebettete IE, das HTML in der Hilfedatei anzuzeigen.

Aber frag mich nicht, was man machen musste, um das zu ändern. Vielleicht mal die Forumssuche bemühen, irgendwo stand das.

Hab’s gefunden: http://www.helpscribble.com/chmnetwork.html

Wenn man die Datei nach dem Download öffnet, muss man den Haken bei “vor dem Öffnen dieser Datei immer bestätigen” wegmachen.

danke!!

funktioniert!

lg mike

Hmm, wie in einem anderen Thread genannt, habe ich nun alle “CurrentPlaybackControl” durch “PlaybackControl(1)” ersetzt. Leider klappt das Skript noch immer nicht, nach wie vor kommt “[Fehler] (12:1): Type mismatch”. Ich vermute, dass es an dem “then begin” liegt.
Torben, kannst du helfen?

So sieht das Skript aktuell aus:

[code]var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to PlaybackControl(1).GetPlayerCount - 2 do
if ((PlaybackControl(1).GetPlayer(i).GetState = psLoaded) or
(PlaybackControl(1).GetPlayer(i).GetState = psPaused))
and
((item = -1) or
(CurrentPlaylist.IndexOf(PlaybackControl(1).GetPlayer(i).GetItem) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(PlaybackControl(1).GetPlayer(i).GetItem);
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
PlaybackControl(1).PlayerStart(player);
for i := 0 to PlaybackControl(1).GetPlayerCount - 2 do
if i <> player then begin
if PlaybackControl(1).GetPlayer(i).GetItem <> nil then
PlaybackControl(1).GetPlayer(i).GetItem.SetFadeDuration(10000000);
PlaybackControl(1).PlayerFadeOut(i);
end;
end;
end.[/code]

Warum das?

Ahso, ich dachte, das hätte vielleicht mit der neuen Skriptsprache zu tun. Weil früher ging dieses Automationsskript ja auch immer mit CurrentPlaybackControl. Na dann war das wohl ein Griff ins Klo.
Aber vielleicht magst du mir ja trotzdem helfen, bringt bestimmt auch anderen was, wenn die sehen, was man ändern muss! :wink: :wink:

Ist ein Problem auf mAirList-Seite.

Als Workaround müsste das hier funktionieren:

[code]
var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to PlaybackControl(1).GetPlayerCount - 2 do
if ((PlaybackControl(1).GetPlayer(i).GetState = psLoaded) or
(PlaybackControl(1).GetPlayer(i).GetState = psPaused))
and
((item = -1) or
(CurrentPlaylist.IndexOf(IInterface(PlaybackControl(1).GetPlayer(i).GetItem)) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(IInterface(PlaybackControl(1).GetPlayer(i).GetItem));
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
PlaybackControl(1).PlayerStart(player);
for i := 0 to PlaybackControl(1).GetPlayerCount - 2 do
if i <> player then begin
if PlaybackControl(1).GetPlayer(i).GetItem <> nil then
PlaybackControl(1).GetPlayer(i).GetItem.SetFadeDuration(10000000);
PlaybackControl(1).PlayerFadeOut(i);
end;
end;
end.[/code]

Leider nicht… :frowning:


mAirList

Error running script: [Fehler] (20:24): Unknown identifier ‘PLAYERSTART’


OK

Gut, hangeln wir uns weiter durch. Mach aus dem

PlaybackControl(1).PlayerStart(player);

mal das hier:

PlaybackControl(1).GetPlayer(player).Start;

Weiter unten bei PlayerFadeOut analog.

Danke erst mal für deine Hilfe so weit! Ich habe das Ganze jetzt angepasst. Jetzt kommt keine Fehlermeldung mehr, allerdings tut sich auch nichts. Hier mal das Skript, so wie es jetzt aussieht:

[code]var i, player, item: integer;

begin
player := -1;
item := -1;
for i := 0 to PlaybackControl(1).GetPlayerCount - 2 do
if ((PlaybackControl(1).GetPlayer(i).GetState = psLoaded) or
(PlaybackControl(1).GetPlayer(i).GetState = psPaused))
and
((item = -1) or
(CurrentPlaylist.IndexOf(IInterface(PlaybackControl(1).GetPlayer(i).GetItem)) < item))
then begin
player := i;
item := CurrentPlaylist.IndexOf(IInterface(PlaybackControl(1).GetPlayer(i).GetItem));
end;

if (player = -1) then
SystemLog(‘Keinen freien Player gefunden.’)
else begin
PlaybackControl(1).GetPlayer(player).Start;
for i := 0 to PlaybackControl(1).GetPlayerCount - 2 do
if i <> player then begin
if PlaybackControl(1).GetPlayer(i).GetItem <> nil then
PlaybackControl(1).GetPlayer(i).GetItem.SetFadeDuration(10000000);
PlaybackControl(1).GetPlayer(i).FadeOut;
end;
end;
end.[/code]

Hmm, was fehlt denn jetzt noch?

Ab Build 528 muss wahrscheinlich das “IInterface(…)” wieder weg.

Hab ich gemacht, es tut sich trotzdem nichts. Aber auch keine Fehlermeldung… Any idea?

Nee. Musst du wohl mal debuggen. An den entsprechenden Stellen SystemLog(…) einfügen und Meldungen ausgeben lassen um zu gucken, ob die Verzweigungen alle so funktionieren wie sie sollen, zum Beispiel.