Hey,
habe ein Problem mit einer Com-Anfrage (Objekt = DVBViewer pro).
zunächst mal die Doku der Funktion:
Spoiler anzeigen
ZitatAlles anzeigen
function GetAsArray(ChannelID: Integer; StartTime: TDateTime; EndTime: TDateTime; out List: OleVariant): Integer;Returns a variant SafeArray of EPGItems which meet the criteria. This function is for highspeed data retrieval.
The returned array is two dimensional [0..EPGItemCount, 0..EPGItemPropertiescount]. The second dimension is defined as follows:List[i,0] := EPGChannelID; // Longword (unsigned int)
List[i,1] := EventID; // Longword (unsigned int)
List[i,2] := Time; // Datetime (Double)
List[i,3] := Duration; // Datetime (Double)
List[i,4] := Event; // String
List[i,5] := Title; // String
List[i,6] := Description; // String
List[i,7] := CharSet; // Byte
List[i,8] := Content; // ByteParameters
ChannelID
The EPGChannelID as explained in IEPGManager.hasEPG. If you want all channel set this to 0.
StartTime
The start time and date. If set to 0 it gets all available EPG data till EndTime.
EndTime
The end time and date. If set to 0 it gets all available EPG data from StartTime till the end of the buffer.
If StartTime=EndTime you get all programs running at this point of time.
List
A Variant to be filled with the data.
Returns
The count of entries in the array.
Hier mein Skript:
Spoiler anzeigen
#include <array.au3>
$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
dim $list
$SID = $DVBViewer.CurrentChannel.Tuner.SID() ; SID des getunten Senders holen
$TSID = $DVBViewer.CurrentChannel.Tuner.TransportStreamID() ;TID des getunten Senders holen
$NID = $DVBViewer.CurrentChannel.Tuner.NetworkID()
$EPGID = $SID + $TSID * 65536 ;DVBV spezifisch, diese Zeile ist richtig
ConsoleWrite($SID & " " & $TSID & " " & $NID & " " & $EPGID & @CRLF) ;debug zeile -> Abfragen sind erfolgreich
[/autoit] [autoit][/autoit] [autoit]$test = $DVBViewer.EPGManager.GetasArray($EPGID,0,0, $list) ;Array holen
[/autoit] [autoit][/autoit] [autoit]ConsoleWrite($test & @CRLF) ; Den "Count" der Arrayeinträge bekomme ich, die Anfrage klappt also scheinbar
[/autoit] [autoit][/autoit] [autoit]If IsArray($list) then _ArrayDisplay($list) ; $list ist nur kein Array
MsgBox(1, "", @error) ; @error = 0
Seht ihr den Fehler? Gibt es bei Com-Rückgaben als Array noch etwas besonderes zu beachten?
Danke schonmal für die Hilfe
Gruß nuts