Narses hat folgendes geschrieben: |
Moin!
Du könntest einfach SizeOf(Trecord) Bytes ab der Zeigerposition vergleichen; gab´s da nicht Stringvergleichsfunktionen, die sowas könn(t)en... ?
cu
Narses |
Ja, das geht. Funktion nennt sich
CompareMem.
Allesquarks hat folgendes geschrieben: |
Hab ich nicht ausprobiert aber ich würde behaupten, dass sizeof(Trecord) immer 4 Byte zurückgibt (Zeiger). |
Records sind für Delphi keine Zeiger im eigentlichen Sinne. Delphi arbeitet nur meist mit einem Zeiger auf die Daten, da Records in kein Register passen und Records "Masken" darstellen, um auf diese Daten zuzugreifen.
SizeOf(TRecord) liefert die Größe (des größten Teilzweigs) eines Records zurück.
Allesquarks hat folgendes geschrieben: |
Eine allgemeine Funktion, die beliebige records und Objekte vergleicht ist sowieso nicht möglich ohne individuellen Code, der die spezifischen Objekte verarbeitet. |
Da geb ich dir insofern Recht, als
dass CompareMem nur für Records ohne Strings, Arrays oder anderer dynamisch verwalteter Objects zuverlässig funktioniert.
Allesquarks hat folgendes geschrieben: |
Andernfalls müsste man zu jedem Objekt eine Laufzeit Dokumentation bereithalten. Soweit ich weiß geht die RTTI nicht soweit. Deshalb: Eigene Vergleichsfunktion implementieren. |
Das ist einer der wenigen Sprachvorteile von Java, auch wenn die RTL kacke ist ...
Allesquarks hat folgendes geschrieben: |
Das mit dem Sizeof(record) funktioniert vielleicht mit packed Objekten. Will mich aber auch nicht zu weit aus dem Fenster lehnen. |
Siehe Kommentar oben von mir ...
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.