Generell ist das Verwenden von globalen Variablen zu vermeiden, vor allem, weil es eine einfache Möglichkeit gibt, diese zu schützen.
Delphi-Quellcode:
interface
function GlobValue : MyRecord;
procedure SetGlobValue( const Value : MyRecord );
implementation
var
_GlobValue;
function GlobValue : MyRecord;
begin
Result := _GlobValue;
end;
procedure SetGlobValue( const Value : MyRecord );
begin
// prüfen, ob die Änderung erlaubt ist
_GlobValue := Value;
// Benachrichtigung über die Änderung
end;
Sinnvoll ist es auch den Record
immutable (unveränderlich) zu gestalten und die Erzeugung des Wertes über einen Konstruktor zu regeln:
Delphi-Quellcode:
MyRecord = record
private
FS1 : string;
FS2 : string;
public
constructor Create( const S1, S2 : string );
property S1 : string read FS1;
property S2 : string read FS2;
end;
constructor MyRecord.Create( const S1, S2 : string );
begin
// Validierung
FS1 := S1;
FS2 := S2;
end;
Im Konstruktor kann jetzt auf Plausibilität geprüft werden und bei unsinnigen Werten wirft man eine
Exception.
Mit diesen einfachen Mitteln wird es unmöglich gemacht, dass unbemerkt Änderungen gemacht werden oder inkonsistente Daten vorliegen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)