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.