EnumActiveEvents
ITcEventLog::EnumActiveEvents
Gibt ein Aufzählungsobjekt zurück, welches zum Iterieren über die aufgelisteten aktiven Events benutzt wird.
HRESULT EnumActiveEvents([out,retval] IUnknown** ppEnum);
Parameter
ppEnum
[out, retval] Pointer auf den ITcEnumEvents Schnittstellen-Pointer, der die Aufzählungsobjekte der aktiven Events erhält.
Rückgabe Werte
S_OK
Funktion wurde erfolgreich aufgerufen.
E_POINTER
ppEnum war kein gültiger Pointer.
Visual Basic Beispielcode
' get the one and only event logger
Dim evtLogger As TCEVENTLOGGERLib.TcEventLog
Set evtLogger = New TCEVENTLOGGERLib.TcEventLog
' get the active event enumaration object
Dim enumEvt As ITcEnumEvents
Set enumEvt = evtLogger.EnumActiveEvents
' try to get max events an loop through the event list Const coMax As Long = 20
Dim i As Long
Dim nFetched As Long
Dim evt As TcEvent
Dim arrEvt(1 To coMax) As Object
Do
nFetched = enumEvt.Next(coMax, arrEvt(1))
For i = 1 To nFetched
Set evt = arrEvt(i)
' print the event message in english
Debug.Print evt.GetMsgString(1033)
' release the evt object
Set arrEvt(i) = Nothing
Next i
Loop While (nFetched >= coMax)
Anmerkungen
Die importierten TcEventLogger-Typblibliotheken verhalten sich unter CodeGear C++Builder 2009 anders als unter Visual Studio C++. Beide Entwicklungsumgebungen generieren dabei einen unterschiedlichen Code. In C++Builder wird das zurückgelieferte Auzählungsobjekt nicht automatisch freigegeben wenn es den Sichtbarkeitsbereich verlässt ("out of scope" geht). Z.B. nach der Zuweisung:
ITcEnumEventsPtr enumEvt = evtLogger->EnumActiveEvents();
muss in C++Builder das nicht mehr benötigte Objekt explizit freigegeben werden:
enumEvt->Release();
Hier gibt es einen Unterschied zu Microsoft Visual Studio C++ Implementierung. Dort ist der Release-Aufruf nicht notwendig. Aus diesem Grund verwenden Sie bitte in C++Builder die EnumActiveEventsEx()-Methode. Bei dieser Methode wird das zurückgelieferte Objekt auch unter C++Builder automatisch freigegeben.