AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

record vergleichen

Ein Thema von StTüff · begonnen am 7. Nov 2003 · letzter Beitrag vom 10. Nov 2003
Antwort Antwort
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#1

record vergleichen

  Alt 7. Nov 2003, 07:35
Guten Morgen!

Ich hätte da noch eine Frage:

Angenommen ich habe folgendes:
Delphi-Quellcode:
TRecDaten = record
    Messwert : TStuetzpunkt;
    Saved : boolean;
  end;
ich kann dann den Inhalt einer Variblen a vom Typ TRecDaten einer
Variablen b vom Typ TRecDaten sehr einfach zuweisen:
 b := a; wenn ich aber vergleichen möchte, ob der Inhalt identisch ist,
 if a=b then... so bekomme ich:
[Fehler] ttt.pas(310): Inkompatible Typen

Muss ich die einzelnen Elemente vergleichen (was ja richtig viele
sein können), oder geht's auch auf eine andere Art?

Vielen Dank schon mal,

StTüff
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: record vergleichen

  Alt 7. Nov 2003, 08:12
Hallo StTüff,

Records als Packed deklarieren:
Delphi-Quellcode:
TRecDaten = packed record
    Messwert : TStuetzpunkt;
    Saved : boolean;
  end;
Delphi-Quellcode:
  IF CompareMem(@a, @b, sizeof(a)) THEN
     // sind gleich
sollte funktionieren.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: record vergleichen

  Alt 7. Nov 2003, 08:31
Das wollte ich hören!

Vielen Dank!

StTüff
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: record vergleichen

  Alt 7. Nov 2003, 08:53
Ich möchte darauf hinweisen, das die Methode CompareMem nur genutzt werden kann, wenn im Rekord keine Pointer enthalten sind (z.B. Objektbezüge, Strings o.a.)

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: record vergleichen

  Alt 7. Nov 2003, 09:03
Hallo sakura!

Das ist in diesem Fall zum Glück nicht so, hast Du einen
Vorschlag wie es in dem von Dir beschriebenen Fall zu
realisieren wäre?

Vielen Dank für den Hinweis.

StTüff
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#6

Re: record vergleichen

  Alt 7. Nov 2003, 11:25
In diesem Fall würde ich eine eigene "CompareRecord"-Funktion schreiben, denn in diesem Fall musst du wirklich jedes Feld einzeln vergleichen...
Manuel Pöter
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: record vergleichen

  Alt 7. Nov 2003, 12:27
Wenn Du statt Records Klassen verwenden würdest und statt der Felder published Properties, könntest Du mithilfe der RTTI (Runtime Type Information, siehe OH) selbst bei Referenzierten (Pointer als Recordfelder) oder Aggregierten (Unterrecords als Recordfelder) Objekten (dann Rekursiv) einen "tiefen Vergleich" durchführen.

Die Problematik entspricht im Wesentlichen dem Problem der der Bei Google suchenshallow copy und der Bei Google suchendeep copy.
Wenn Dich dieser Ansatz interssiert, mache einen neuen Thread auf und wir könnten den Vergleich von Objekten mithilfe der RTTI diskutieren (leider erst heute nach Feierabend).
gruß, choose
  Mit Zitat antworten Zitat
StTüff

Registriert seit: 3. Dez 2002
132 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: record vergleichen

  Alt 10. Nov 2003, 06:00
Hallo!

Vielen Dank für den Hinweis.

Leider habe ich momentan keine Zeit, so "tief" einzusteigen.
Grundsätzlich interessiere ich mich natürlich für alles, was
ich noch nicht kenne.

Vielleicht komme ich noch mal auf Dein Angebot zurück, wenn's
bei mir zeitlich besser passt.

Gruß und noch mal besten Dank an alle!

StTüff
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz