Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Records vergleichen
Nilsener - Mi 24.09.03 10:29
Titel: Records vergleichen
Hallo,
ich habe 2 Variablen: daten : pruefdaten und verify : pruefdaten. Vorher habe ich definiert: Type Pruefdaten = record eine ganze menge Variblen end;
Der Compiler läßt folgendes zu: daten:=verify;
Wenn ich vergleiche: if daten = verify then fehler:=false; erhalte ich die Fehlermeldung 'incompatible types' und der Cursor blinkt hinter dem 'then'.
Die einzelnen Elemente des Records zu vergleichen funktioniert: if daten.nullpunkt = verify.nullpunkt then fehler:=false; Das ist aber bei vielen Elementen sehr aufwendig.
Einige Ideen wie man das elegant löst ?
CenBells - Mi 24.09.03 10:47
hallo,
wenn du das häfiger brauchst, empfiehlt es sich eine eigene function zu schreiben, die zwei records übergeben bekommt und alle werte vergleicht. Anders lässt sich das bei Records meines wissens nach nicht machen.
Gruß
Ken
UC-Chewie - Mi 24.09.03 11:23
Doch, geht viel einfacher. Ein Record ist einfach eine Darstellung eines Stück Speichers. Das erste Feld beginnt an der Startadresse des Records, das letzte endet an der Endadresse.
Es gibt eine Funktion namens CompareMem:
Delphi-Quelltext
1: 2:
| if CompareMem(@Record1, @Record2, Sizeof(TMyRecord)) then else |
mb - Mi 24.09.03 11:30
:?: was hat das überhaupt mit der VCL zu tun?
mb - Mi 24.09.03 11:30
:?: was hat das überhaupt mit der VCL zu tun?
=> Sorry, ... wo ist die Delete-Funktion, wenn man zweimal auf Absenden geklickt hat?
Nilsener - Mi 24.09.03 12:16
Titel: Vielen Dank, problem gelöst
Vielen Dank für Eure Hilfe, sehr glücklich bin ich über die Lösung von UC-Chewie, ich habe es getestet, es funktioniert super.
Gruss Nils
Motzi - Mi 24.09.03 12:47
Ja, so wie UC-Chewie das macht mach ich das auch, ABER - wenn du in deinem Record einen String (ich mein jetzt einen LongString und keinen ShortString oder String[xxx]), ist das eine potenzielle Gefahrenquelle, da ein LongString nur ein Pointer ist - es kann also durchaus auch vorkommen, dass 2 LongStrings zwar denselben Text beinhalten, aber auf 2 unterschiedliche Adressen zeigen!!
Nilsener - Do 25.09.03 16:56
Danke, kann vorkommen das mit den LongStrings, muss ich drauf achten.
Gruss Nils
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!