Zitat:
Es kann es sein, dass mehrere TTest auf das gleich TValues zeigen
In diesem Fall würde ich eine separate Liste anlegen in denen die TValues + eine eindeutige ID (Cardinal) gespeichert werden. In deiner TTest Klasse hast Du dann nur diese ID.
Jede neues TValue erzeugt eine neue ID mit Inc(LastID).
Wenn Du ein TValue löscht werden die IDs automatisch ungültig. Dies Liste ist sortiert, da neue Values hinten angehängt werden. Wert-Lücken ergeben sich durch das löschen.
Du kannst das TValue zu jeder ID schnell mit List.
BinarySearch suchen - und wenn es nicht gefunden wird, ist der Wert eben ungültig.
Anmerkung - müsste es nicht heißen for i:=0 to List-Count
-1 do ?