Ich habe eine Klasse mit vielen numerischen Feldern, die Anzahl der Felder wächst mit der Projektentwicklung, also wäre es schön, eine Möglichkeit zu haben, alle Felder zurückzusetzen, egal wie viele in Zukunft hinzugefügt werden.Delphi: Wie kann ich alle Klassenfelder auf Null zurücksetzen?
TParams = class
public
defined: boolean;
FirstValue: byte; // reset from here
A0: single;
A1: single;
H1: TPoint;
// ...............
A100: single;
LastValue: byte; // to here
procedure Reset;
end;
Die einzige Idee in den Sinn kommt, ist 2 Felder einfügen: vor und nach dem Block, der reseted werden sollte, und verwenden FillMemory:
procedure TParams.Reset;
begin
FillMemory(@FirstValue, Integer(@LastValue)-Integer(@FirstValue),0);
end;
Gibt es eine bessere Art und Weise? (Im mit Delphi 7)
Alle Felder in einen Datensatz einfügen und den Datensatz auf Null stellen. Benutze keinen hässlichen Hack wie diesen. –
Die Nullsetzung wird keine "verwalteten" Mitglieder finalisieren. Wenn nur numerische Felder vorhanden sind, ist die Nullsetzung in Ordnung. –