Also so sieht es eigentlich aus, musste aber Firmenspezifische Abkürzungen von ein paar Bezeichnern entfernen.
Die Kommentare sind von mir für euch zur Erklärung!
Delphi-Quellcode:
class function TNotifyEventContainer.CreateContainer(ANotification : HNotification; AExtMedium : IAExtMedium) : IEventContainer;
var
EventType : IEventType;
Event : TNotifyEventContainer;
//IEventContainer;
begin
Result :=
nil;
if Assigned(AExtMedium)
then
begin
//in diesem Create steckt ein "leeres" Try-Except mit nur OutputDebugString um den Konstruktur-Code
Event := TNotifyEventContainer.Create(ANotification, AExtMedium.GetAliasName, AExtMedium.GetGuid);
//FindEventType ist eine flache Funktion in der Unit.
//GetEventTypes liefert eine IInterfaceList.
//EventType ist ein out-Parameter, die Funktion sucht in der Liste anhand
//von GetEventTypeID das betreffende IEventType in der IInterfaceList und gibt es zurück
if Assigned(Event)
and FindEventType(AExtMedium.GetEventTypes, Event.GetEventTypeID, EventType)
then
begin
//setzt nur EventType als Field-Variable von TNotifyEventContainer
Event.SetEventType(EventType);
end;
Result := Event;
end;
end;
Zur meiner Verteidigung muss ich sagen, dass das nicht von mir, sondern von meinen Vorgänger stammt.
Ich wäre hierrüber auch nie gestoßen, hätte ich nicht manchmal merkwürdige Effekte/Fehlermeldungen, seitdem ich FastMM4 installiert habe.
Der alte Speichermanager hatte wahrscheinlich beide Augen zugedrückt.