GetDuration liefert den Wert als Zahl (int64) zurück (in Einheiten von 1/10,000,000 Sekunden), nicht als String. GetStartTime die Zeit als TDateTime (Delphi-eigenes Format: Tage seit dem 1.1.. Du musst beides von Hand in einen String konvertieren. Zum Beispiel so:
Die Startzeit kannst du ganz einfach an FormatDateTime übergeben:
sl.Add('$playd1="' +FormatDateTime('hh:mm:ss', pi.GetStartTime)+ '";');
Die Laufzeit musst du vorher in einen TDateTime umwandeln. Das ist ein sehr kranker Delphi-Typ: Eine Fließkommazahl, die die Zeit in Tagen seit dem 30.12.1899 angibt. Das Datum ignorieren wir hier mal, und um die Länge in die richtige Einheit zu kriegen, müssen wir sie erst durch 10.000.000 teilen (dann haben wir Sekunden) und dann nochmal durch 24*60*60. Danach können wir wieder FormatDateTime verwenden:
sl.Add('$playc1="' + FormatDateTime('hh:mm:ss', (pi.GetDuration/10000000)/(24*60*60)) + '";');
Torben
PS: Was mir an deinem Script noch auffällt: Du solltest überprüfen, ob die Playlist auch wirklich noch genügend Einträge hat, sonst gibt das GetItem(2) usw. eine Exception.