Hey,
sitze immernoch an einem Skript für den DVBViewer (TV-Software - in Delphi geschrieben).
Folgendes soll gemacht werden: EPG-Daten von einem Sender holen und die gleichen Daten wieder setzen, nur für einen anderen Sender (der keine eigenen EPG-Daten hat).
Soweit so gut - Hier mal der Link zum Gespräch mit dem Entwickler: http://www.dvbviewer.info/forum/index.php?showtopic=38502
Und das Skript:
Spoiler anzeigen
$DVBViewer = ObjGet("", "DVBViewerServer.DVBViewer");Verbindung aufbauen -> klappt
If $DVBViewer = 0 Then; ohne Verbindung das Skript beenden
MsgBox(1, "", "Keine Verbindung zum DVBViewer möglich")
Exit
EndIf
$epg = $DVBViewer.EPGManager
$get = $epg.Get(132,6 ,0,0)
$count = $get.Count()
$item = $get.Item(1)
$add = $epg.addEPG
$newitem = $add.newitem
with $item
$charset = .Charset;
$content = .Content;
$Description = .Description;
$duration = .Duration;
$endtime = .EndTime;
$EPGEventID = .EPGEventID;
$Event = .Event;
$EventID = .EventID;
$serviceID = .ServiceID;
$Time = .Time;
$Title = .Title;
$TransportID = .TransportID;
ConsoleWrite(VarGetType($duration) & @CRLF)
EndWith
with $newitem
.charset=$charset
.content = $content
.Description = $Description
.Duration=$duration ; -> TDateTime (Delphi spezifisch?) entspricht einer Fliesskommazahl (double)
.time=$Time ; -> TDateTime entspricht einer Fliesskommazahl (double)
.event=$Event
.eventID=$EventID
.title=$Title
.EPGEventID=$EPGID ; EPGChannelID vom neuen Sender (hier eurosport)
EndWith
[/autoit] [autoit][/autoit] [autoit]$add.add($newitem)
$add.commit()
Leider interpretiert Autoit die geholten Daten "falsch" und bei der Übergabe kommt ein Error (Request to Objekt failed oder so ähnlich)
Das wieder zurechtzubiegen funktioniert nur teilweise:
Spoiler anzeigen
with $item
$duration = .Duration; -> $duration wird als String interpretiert
$endtime = .EndTime; -> string ..
$Time = .Time; -> string ..
EndWith
with $newitem
.Duration=_WinAPI_IntToFloat(Number($Duration)); -> Geht nach der Wandlung von String to Int to Float
.time=_WinAPI_IntToFloat(Number($time)); -> Error
EndWith
Sehr verwirrend
$Newitem.Duration = $Item.Duration; ohne Zwischenschritt klappts auch nicht
[/autoit]
Vielleicht fällt euch ja noch was ein?
Gruß nuts
P.S. aus der COM-Doku: