Codebeispiele mAirListScript

hallo. ich möchte über ein execute command ein script aufrufen und möchte auf “ICartPlayerControl” zugreifen. nur finde ich den weg dort hin nicht falls ihr wisst was ich meine.

kann mir wer helfen? bin am verzweifeln!!! :-[

DANKE!

lg :slight_smile:

hallo. ( vl kann mir diesmal wer helfen )

ich habe dieses script geschrieben. der sinn is der, dass wenn die pl leer ist, dass sich beim ramp countdown das autohide ausschaltet. nur er schreibt typemismatch und ich verstehe nicht warum:

[code]
procedure OnPlayerStop ( PlayerControl : IPlayerControl ; Item : IPlaylistItem ; Duration : int64 ) ;
begin

if (PlaybackControl(0).GetPlayer(0).GetState=PS_EMPTY) and
(PlaybackControl(0).GetPlayer(1).GetState=PS_EMPTY) then begin
Config.WriteOnOff ( ccScreenObjects , 6 , 3 , false ) ;
end;
end;

begin
end.[/code]

hier dazu die writeonoff aus der hilfedatei: procedure WriteOnOff ( iCategory : TConfigCategory ; iSection , iKey : string ; iValue : boolean )

dazu der auszug aus der screenobjects.ini:

[ScreenObject6] Type=PlayerCountdown Align=Top AutoHide=on FontSize=24 TimeFormat=ss TextFormat=%s CountdownType=Ramp NearestRamp=on EOFWarningAfterEffectiveEnd=off

danke schonmal für eure hilfe ( vl hast du zeit flashlighter :wink: )

Lg Mike

Es müsste heißen:

Config.WriteOnOff ( ccScreenObjects , 'ScreenObject6' , 'AutoHide' , false ) ;

Das bringt aber wenig, denn das schreibt den Wert zwar in die screenobjects.ini, der wird aber erst beim nächsten Programmstart wieder ausgelesen.

aaah. ok danke.

gilt das auch für ICartPlayerControl

lg

Wie meinst du das?

Ja, alle Objekte von mAirList lesen ihre Parameter beim Programmstart einmalig aus der Config. Änderungen an der Konfiguration werden erst beim Neustart übernommen.

ich möchte über ein ExecuteCommand auf die ICartPlayerControl zugreifen. und zwar auf GetStack.

nur komm ich nicht darauf.

könntest du mir bitte helfen ?

Lg

“Über ein ExecuteCommand”?

An die Cartplayer kommst du über Engine.GetCartwall.GetPlayer(0) usw.

ah. herzlichen dank. das hilft mir weiter. werde das gleich probiern. falls ich hilfe bracuh melde ich mich wieder.

lg mike

PS wenn ich fragen darf: wie kommst du mit der version 3.0 voran?

sorry aber er kennt “GetCartwall” nicht. steht auch nicht so in der hilfedatei. außerdem möchte ich über die ICartPlayerControlauf function GetStack : IPlaylist zugreifen!!

lg

hier das script. falls es hilft:

[code]procedure OnExecuteCommand ( CARTPLAYER1LOAD : string ) ;

begin
Engine.GetCartwall.GetPlayer(0).GetStack(‘ADD’);
end;

begin
end.[/code]

lg

@ Torben:

Könntest du mir bitte nur kurz helfen ? Ich komme nicht weiter…

lg

Tut mir leid, wenn ich nicht immer nach fünf Minuten antworte. Das hat manchmal einen Grund. Zum Beispiel, dass ich nicht zuhause bin. Also nicht ungeduldig werden.

Dein Code ergibt keinen Sinn. Was versuchst du da überhaupt zu bewerkstelligen?

Um auf ein bestimmtes Kommando zu reagieren, muss die Prozedur so aussehen:

procedure OnExecuteCommand(Command: string);
begin
  if Command = 'MEINKOMMANDO' then begin
    { hier dann den Code rein }
  end;
end;

Engine.GetCartwall.GetPlayer(0).GetStack liefert dir dann den Stack des Cartplayers (als IPlaylist-Objekt) zurück. Was möchtest du dann mit dem tun? Etwas anhängen?

danke fürs antworten.

ich möchte über ein kommando in den cartwallstack was anhängen. kann ich das so machen??

lg

hier das script:

[code]procedure OnExecuteCommand ( CARTPLAYER1LOAD : string ) ;

begin
Engine.GetCartwall.GetPlayer(0).GetStack.Add(1);
end;

begin
end.[/code]

beim programmstart kommt diese fehlermeldung:

The following errors occured during initialization:

Error loading C:\Programme\mAirList\scripts\cartplayerstack.mls: [Error](4:8): Unknown identifier 'GETCARTWALL'

EDIT:

ich habs jetzt so geändert, wei du beschrieben, hat aber keine auswirkung:

[code]procedure OnExecuteCommand(Command: string);
begin
if Command = ‘CARTPLAYER1LOAD’ then begin
Engine.GetCartwall.GetPlayer(0).GetStack.Add(1);
end;

begin
end.[/code]

lg

Entschuldigung, heißt natürlich “GetCartwallControl” (siehe Hilfedatei).

Als nächstes wird er dann meckern, dass “1” kein IPlaylistItem ist:

Engine.GetCartwall.GetPlayer(0).GetStack.Add(1);

ja sry. ich hab ma den ganzen mist selber lernen müssen… das is ned so leicht für jemanden, der mit so was vorher nie was zu tun ghabt hat…

ich hab schon rausgfunden, dass ich für IPlaylistItm was anderes reinschreiben muss. einen befehl aus der hilsdatei von der sparte. nur ka welchen ich da nehmen soll, wenn ich einfach nur was anhängen möchte…

PS das GETPLAYER stimmt auch nicht, weil ich in der CartwallControl nur auf PlayerControl und nicht auf CartplayerControl zugreifen kann und genau das ist mein problem, was ich aber jetzt eh schon in den oberen beiträgen beschrieben habe!

hey torben,

es ist tatsächlich so, dass man über ICartwallControl.GetPlayerControl nur ein IPlayerControl-objekt zurückbekommen kann, welches dann keine GetStack() funktion anbietet.
ist das absicht? denn eigentlich wäre es ja logischer, wenn man über die CartwallControl auf CartPlayerControl-objekte zugreifen könnte, oder?

oder haben wir mal wieder was übersehen? :wink:

grüße, michi

Ah, stimmt, da ist das Problem.

Man muss einen Typecast machen (und wissen, dass der in diesem Fall erlaubt ist):

ICartPlayerControl(Engine.GetCartwall.GetPlayer(0)).GetStack

mAirList 3.0 wird in der Hinsicht um einiges besser gestaltet sein. Da liefert GetPlayer dann sofort ein ICartPlayerControl zurück, das allerdings von IPlayerControl abgeleitet ist. Auf diese Weise kommt man sofort an alle Methoden sowohl von ICartPlayerControl als auch IPlayerControl, ohne Typecast.

Ah Super Torben!

Jetzt habe ich noch eine Frage:

Kann ich vom Browser auch Elemente in den Stack laden, oder ist das erst ab Version 3.0 möglich ? Ich frag nur nach, weil man kann ja aus dem Browser mit ENTER den gewählten Titel in die Playlist 1 laden.

lg mike

Nein, geht nicht. Vielleicht in mAirList 3.0, mal gucken.