![]() |
Checksumme einer Klasse erzeugen?
Hallo DPler,
ist es möglich eine Checksumme einer Klasse zu erzeugen? Wenn ich z.B. eine Klasse hätte die Informationen (z.B.: Strings) hält, könnte ich mir von dieser Klasse eine Checksumme erstellen um irgendwann später auf Veränderungen der Information reagieren zu können? MfG, dnub |
AW: Checksumme einer Klasse erzeugen?
Na ja, natürlich kannst Du Dir eine Funktion schreiben, die mit Deinen Propertys irgend etwas durchführt, um eine Checksumme o.ä. zu erhalten. Diese kannst Du in einem privaten Feld speichern und später mit einer erneuten Berechnung vergleichen.
Die besser Lösung wird aber sein, ein den Settern der Proertys direkt auf Änderungen zu reagieren bzw. dort ein Änderungsflag zu setzen, das Du später auswerten kannst. |
AW: Checksumme einer Klasse erzeugen?
Ich sehe das genauso wie stahli. Die Frage, die sich mir stellt, ist: wer ändert denn wann die Daten? Brauchst Du einen Vorgabewert, mit dem Du ggf. vergleichen kannst, wenn die Daten z.B. aus einer Datei ausgelesen werden sollen? Erklär doch einmal genauer, was der Zweck der Übung sein soll, dann kann man bestimmt mehr dazu sagen.
|
AW: Checksumme einer Klasse erzeugen?
Danke erstmal für die schnellen Antworten.
Der Nutzer gibt Daten in einer Art Wizard ein. Diese Information werden in eine Klasse mit entsprechenden properties geschrieben. Die Klasse wird ein Versionsfeld besitzen. Dieses Versionsfeld soll hochgezählt werden, wenn der Anwender diese Daten ändert. Diese Problematik würde ich gern mit einer Checksumme der Klasse lösen. MfG, dnub |
AW: Checksumme einer Klasse erzeugen?
Hier kommt eine Beispielklasse, die zeigt wie man mit wenig Aufwand
alle Properties überprüfen kann.
Delphi-Quellcode:
interface
type TMeinWizzard = class(TObject) private FModifyCount : Integer; // Anzahl geänderter Properties FStringProp: string; FIntProp: Integer; // Hilfsfunktionen, für das interne Zuweisen von Properties procedure CheckInteger(var p:Integer; value:Integer); procedure CheckString(var p:string; const value:string); procedure SetStringProp(const Value: string); procedure SetIntProp(const Value: Integer); public // zwei beispielhafte Properties property StringProp:string read FStringProp write SetStringProp; property IntProp:Integer read FIntProp write SetIntProp; // Anzahl der Änderungen property ModifyCount:Integer read FModifyCount write FModifyCount; end; implementation { TMeinWizzard } procedure TMeinWizzard.CheckInteger(var p: Integer; value: Integer); begin if p <> value then begin p := value; Inc(FModifyCount); end; end; procedure TMeinWizzard.CheckString(var p: string; const value: string); begin if p <> value then begin p := value; Inc(FModifyCount); end; end; procedure TMeinWizzard.SetIntProp(const Value: Integer); begin CheckInteger(FIntProp, Value); end; procedure TMeinWizzard.SetStringProp(const Value: string); begin Checkstring(FStringProp, Value); end; |
AW: Checksumme einer Klasse erzeugen?
Danke für dieses Beispiel.
Ich hatte dieselbe Idee, nur gefiel sie mir nicht so sehr. Da ich aber bisher keine besser Lösung finden konnte, werde ich diese wohl implementieren müssen. Wenn sonst noch jemand eine Idee hat, nicht zögern und zur Fragerunde beitragen :) MfG, dnub |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz