Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Betrachten wir das doch mal ganz abstrakt aus der Sicht der Anwendung:
Es gibt da so einige Daten-Pakete, die empfangen und gesendet werden können. Mehr interessiert die Anwendung an diesem Punkt nicht. Wann und warum ist egal. Wenn, dann muss die Anwendung reagieren und wenn die Anwendung etwas senden will, dann muss das auch einfach passieren. Wie das passiert, ist der Anwendung an diesem...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Es ist völlig unerheblich, wie er den Record befüllt. So sollte man das definitiv nicht machen (es sei denn man möchte sich unkontrollierte Probleme einhandeln).
Wenn du dem Record einen Event spendierst und dann den Record aus einem Stream lädst, dann ist auch die Zuweisung für den Event entweder leer (im besten Fall) oder der Event zeigt irgendwo ins Nirwana und die Hütte fliegt dir um die...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Vor allem weil er den Record so nicht befüllt!
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Der Speicherbereich des Records wird überschrieben und da kannst du die Variablen so strict private machen wie du möchtest, sie werden trotzdem ohne den Setter zu benutzen geändert.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Und das ändert jetzt was? :gruebel:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Das ist eigentlich unnötig, denn diese Zugriffe kannst du erheblich besser mit einer CriticalSection absichern.
type
TMyClass = class( TThread )
private
FCS : TCriticalSection;
FStatus : TCNCStatus;
procedure SetStatus( const Value : TCNCStatus );
function GetStatus : TCNCStatus;
protected
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Sir Rufo,
26. Mai 2014
Also an den Record selber würde ich keinerlei Events binden.
Statt dessen würde ich eine Klasse (z.B. abgeleitet von TThread) nehmen, welche die Nachrichten empfängt und dann den gesamten Record bei einer Änderung weiterreicht.
Ein Beispiel hatte ich in einem anderen Zusammenhang schon mal geschrieben...