Script Problem

Hi Leute

Kann mir jemand sagen wieso dieses script:

[code]begin
if (CurrentPlaylist.GetCount<=1) then begin
HTTPGet(‘http://localhost/music/go.php’)
CurrentPlaylist.LoadFromFile(‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\music\playlist.m3u’ ,false);
CurrentPlaybackControl.SetAutomation(true);
CurrentPlaybackControl.AutomationPlay;

end;
end.
[/code]

bei der Mairlist version 2.0.11 geht.

Aber bei der Version 2.1.42 geht es nicht.

Ich bekomme immer folgenden Fehler:

The following errors occured during initialization:

Error loading C:\Program Files\mAirList\playlist.mls: [Error] (4:119): Invalid number of Parameters

Kann mir jemand helfen und vieleicht das Script anpassen?

Gruß Space

Weil sich die Funktionsaufrufe geändert haben.

Den “iAppend”-Parameter bei LoadFromFile gibt es nicht mehr, das “false” kannst du also streichen. Außerdem fehlt hinter dem HTTPGet-Aufruf ein Semikolon, oder?

Hi
Danke der Fehler kommt jetzt nicht mehr aber jetzt kommt ein viel größerer Fehler :frowning:

NodeDataSize not initialized. (C:\Program Files\Soft Gems\Virtual Treeview\Source\VirtualTrees.pas, line 25887)

Program Version 2.1.42 Build 461

Call stack:

(002699D4) [0066A9D4]
(001EC1CE) [005ED1CE]
(0020A573) [0060B573]
(0020A2F5) [0060B2F5]
(0020DCDF) [0060ECDF]
(00212E39) [00613E39]
(0039C4B7) [0079D4B7]
(004BB925) [008BC925]
(00085C41) [00486C41]
(000858FD) [004868FD]
(00003999) [00404999]
(0039B964) [0079C964]
(0008EA95) [0048FA95]
(004C7C64) [008C8C64]

Kannst du mir sagen woran das liegt?

Gruß Space

Edit:Es liegt wohl an dieser Zeile CurrentPlaylist.LoadFromFile('C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\music\playlist.m3u'); wenn ich die rausnehme gehts aber an dem Playlist file liegt es nicht weil der windows media player sie abspielt.

Lad dir mal bitte von hier eine neue mAirList.exe herunter: http://www.mairlist.com/download/mAirList/v2.1/snapshot/

Einfach mit der von 2.1.42 austauschen. Außerdem findest du dort eine Datei namens “mAirList.map”, die ebenfalls herunterladen und ins mAirList-Verzeichnis kopieren.

Danach sollte die Fehlermeldung noch detaillierter sein, mit Angaben der Source-Code-Zeilen. Poste die dann bitte nochmal hier.

Hi

Jetzt kommt diese Melung:

NodeDataSize not initialized. (C:\projects\mAirList\trunk\lib\VirtualTreeView\VirtualTrees.pas, line 25550)

Donnerstag, 31. Januar 2008, 03:04:42

Program Version 2.1.42 Build 479

Call stack:

[0064A060] JclHookExcept.JclHookExcept.HookedRaiseException (Line 251, "JclHookExcept.pas" + 3) + $D
[005CC0AA] VirtualTrees.VirtualTrees.TBaseVirtualTree.GetNodeData (Line 25550, "VirtualTrees.pas" + 1) + $18
[005EAA5A] PlaybackTreeView.PlaybackTreeView.TPlaybackTreeView.CreateNode (Line 757, "PlaybackTreeView.pas" + 1) + $4
[005EA7D1] PlaybackTreeView.PlaybackTreeView.TPlaybackTreeView.InitTree (Line 691, "PlaybackTreeView.pas" + 5) + $30
[005EE1E7] PlaybackTreeView.PlaybackTreeView.TPlaybackTreeView.SetPlaybackControl (Line 1775, "PlaybackTreeView.pas" + 15) + $2
[005F3455] PlaylistPanel.PlaylistPanel.TPlaylistPanel.SetPlaybackControl (Line 68, "PlaylistPanel.pas" + 3) + $9
[0079E648] Main.Main.TMainForm.FormCreate (Line 439, "Main.pas" + 142) + $22
[008BF6B9] AutoMain.AutoMain.TAutoMainForm.FormCreate (Line 47, "AutoMain.pas" + 3) + $4
[00486CC1] Forms.Forms.TCustomForm.DoCreate + $31
[0048697D] Forms.Forms.TCustomForm.AfterConstruction + $11
[00404999] System.System.@AfterConstruction + $1D
[0079DAC8] Main.Main.TMainForm.Create (Line 262, "Main.pas" + 18) + $4B
[0048FB15] Forms.Forms.TApplication.CreateForm + $31
(004CAD6C) [008CBD6C]

Danke, ich schau mal.

Ok danke kannste mir dann bescheit sagen wenn du den Fehler gefunden hast?

Gruß Space

Aber sicher.

Du lässt das Script beim Programmstart automatisch ausführen, ja? Das Problem ist offenbar, dass die GUI zu dem Zeitpunkt noch nicht komplett initialisiert ist.

Ich habe mal etwas herumgebastelt und einen neuen Snapshot hochgeladen, Build 481. Schau doch mal bitte, ob es damit besser geht.

Jo hab es gerade mal schnell getestet da scheints zu gehen.
Wenn unsere Playlist gleich mal “OffAir” ist teste ich es auch auf dem windows server.

Danke schonmal :slight_smile:

Edit:Auf dem Windows Server gehts auch :slight_smile:

Gruß Space

Schön :slight_smile:

Hi

Ich schreib jetzt nochmal in diesen Thread weil es eher passt.

Unzwar jetzt scheint alles zu gehen aber die if abfrage scheint nur beim start zu gehen wenn es nurnoch ein Titel oder weniger ist wird sie nicht ausgeführt.

    if (CurrentPlaylist.GetCount<=1) then begin ......

Weist du warum?

Notification Scripts werden nicht ständig ausgeführt, sondern nur zu bestimmten Zeitpunkten aufgerufen, die über die Prozeduren in dem Script definiert sind. Vermutlich hast du die jetzigen Befehle in der OnStartup-Routine stehen. Die wird nur beim Programmstart ausgeführt.

Für Überprüfungen, die regelmäßig stattfinden sollen, eignet sich OnTimer. Such mal im Forum, irgendwo ist erklärt, wie man den benutzt.

Ansonsten stell doch mal dein komplettes Script hier rein, damit wir einen besseren Überblick haben :wink:

Hi

Das ist das Script:

[code]begin
if (CurrentPlaylist.GetCount<=1) then begin
HTTPGet(‘http://localhost/music/go.php’);
CurrentPlaylist.LoadFromFile(‘C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\music\playlist.m3u’ );
CurrentPlaybackControl.SetAutomation(true);
CurrentPlaybackControl.AutomationPlay;

end;
end.[/code]

Und das wird beim Programmstart automatisch ausgeführt?

Jo wird es.
Das Script soll dann immer wenn nurnoch ein Titel in der Playlist ist einmal die URL aufrufen und dann wieder die neue Playlist hineinladen.

Gruß Space

Auf welche Weise hast du es denn hingekriegt, dass das beim Programmstart automatisch ausgeführt wird?

Ich hab das Script als Benachrichtigungs Script eingebunden.
Am code habe ich sonst nichts gemacht.

Ah, ok, dann verstehe ich, was da passiert.

Schau mal in das scripts-Verzeichnis, da gibt es ein Template für Benachrichtigungs-Scripts. Darin findest du eine Reihe von Prozeduren, die mAirList in verschiedenen Situationen aufruft. Zum Beispiel “OnStartup” beim Programmstart, “OnPlayerStart” wenn ein Player gestartet wird usw.

Nimm also mal diese Vorlage und verschieb deinen Code in die OnStartup-Prozedur. Das Hauptprogramm (zwischen dem letzten “begin” und “end.”) sollte leer bleiben (das wird zwar auch beim Programmstart ausgeführt, aber zu einem fragwürdigen Zeitpunkt, wie der von dir gemeldete Fehler zeigt g). Nicht benötigte Prozeduren kannst du einfach löschen.