Hallo mytar,
i.A. wird Dein Ansatz mit
CompareMem nicht funktionieren und entspricht darüber hinaus auch nicht dem Paradigma des OO: Ein Objekt ist bestimmt Durch seine Struktur (hier: Klasse), sein Verhalten (hier: Kombination aus Attributen und Klasse) sowie dessen einzigartiger Identität (niemals identisch bei verschieden Objekten).
Weil Du von Objekten identischer Klassen ausgehst (was in sich schon ein zweifelhafter Ansatz ist und zugunsten eines, der von identischen Typen ausgeht, aufgegeben werden sollte vgl. Booch) scheinst Du lediglich die gleichheit der Attribute überprüfen zu müssen. Während aber Attribute gleich sein können, obgleich sie eine unterschiedliche Identiät aufweisen (siehe Objekte selbst, aber auch in Delphi als Referenzen implementierte Datentypen wie Strings) und ein vergleich über deren Speichersignatur bzw Referenz bereits fehlschlegt, kann es darüber hinaus auch sein, dass sich die Implementierung einer Klasse auf Attribute stützt, die "nach Außen" keine Bedeutung haben (z.B. ein Referenzzähler bei Objekten, die Interfaces unterstützen).
Gerade letzterer Punkt sollte zeigen, dass Du von der Implementierung durch den Compiler abstrahieren solltest und stattdessen einen Ansatz über Reflektion (
RTTI) oder Delegation (siehe Implementierungen von Assign btw AssignTo) wählen solltest...