Perl wird wohl nicht gehen, nein
Ich bin froh, dass Pascal Script so komfortabel funktioniert. Das importiert automatisch alle Schnittstellen in die Scripts, so dass man auf alle mAirList-Objekte zugreifen kann, ohne dass ich irgendeine Zeile Code schreiben müsste.
Pascal ist gar nicht so schwer. Man muss sich nur daran gewöhnen, dass es im Vergleich zu diversen Scriptsprachen (Perl, PHP, JavaScript, …) sehr stark getypt ist. Eine Zahl ist eine Zahl, und ein String ist ein String, und wenn mann die ineinander konvertieren möchte, dann muss man das explizit tun (IntToStr, StrToInt).
Außerdem kann man neue Typen deklarieren. TPlayerState ist so einer, und zwar eine Enumeration. Wenn du in der Script-Hilfe danach suchst, wirst du folgende Definition finden:
TPlayerState = ( psEmpty , psLoading , psLoaded , psPlaying , psFading , psEOF , psError , psPaused , psStopped , psPFL , psFlashEOF , psNext ) ;
Eine Variable vom Typ TPlayerState kann also einen dieser Werte annehmen. (Beachte bitte, dass die letzten drei nur für interne Zwecke - einfaches Auslesen der skin.ini - sind und in der Realität nie eintreten werden.)
Du kannst also einfach mit z.B. “if NewState = psPlaying” abfragen, ob der Player gestartet wurde.
Intern realisiert der Compiler diese Enumerationen als Zahlen (psEmpty = 0, psLoading = 1, etc.). Mit der ord()-Funktion kannst du einen TPlayerState-Wert in die entsprechende Zahl umwandeln, um diese dann zum Beispiel in einen String zu konvertieren und im System-Log auszugeben:
SystemLog('old state: ' + IntToStr(ord(OldState)) + ', new state: ' + IntToStr(ord(NewState)));