Autor Beitrag
Nilsener
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


D4
BeitragVerfasst: Mi 24.09.03 10:29 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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

_________________
Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
if CompareMem(@Record1, @Record2, Sizeof(TMyRecord)) then //Inhalt gleich
else //Inhalt verschieden

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Mi 24.09.03 11:30 
:?: was hat das überhaupt mit der VCL zu tun?

_________________
Gruß,
MB


Zuletzt bearbeitet von mb am Mi 24.09.03 11:31, insgesamt 1-mal bearbeitet
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: 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?

_________________
Gruß,
MB
Nilsener Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


D4
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: 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!!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Nilsener Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26


D4
BeitragVerfasst: Do 25.09.03 16:56 
Danke, kann vorkommen das mit den LongStrings, muss ich drauf achten.

Gruss Nils