Delphi-Quellcode:
Type
THIDDeviceChangeProc = Reference to Procedure(Controler: THIDControler);
THIDControler = Class(TObject)
FOnDeviceChange: TList<THIDDeviceChangeProc>;
End;
Procedure THIDControler.RegisterDeviceChangeProc(Const Proc: THIDDeviceChangeProc);
Begin
If not Assigned(Proc) Then Exit;
If FOnDeviceChange.IndexOf(Proc) < 0 Then
FOnDeviceChange.Add(Proc);
End;
Procedure THIDControler.UnregisterDeviceChangeProc(Const Proc: THIDDeviceChangeProc);
Begin
If not Assigned(Proc) Then Exit;
FOnDeviceChange.Remove(Proc);
End;
Hab grade das Problem, daß .Remove den Eintrag nicht aus der Liste löscht.
Ist echt blöd, wenn "entfernte" Einträge dennoch vorhanden sind, vorallem wenn man dann diese Callbacks auch noch aufruft.
Beim weiteren Forschen ist dann aufgefallen, daß auch .Extract und vorallem .IndexOf die Einträge nicht findet.
Wie kann ich nun bei diesen Referenzen einen korrekten Vergleich implementieren?