Hab gerade kein Delphi da, gebe also keine Garantie für syntaktische Richtigkeit:
Delphi-Quellcode:
type
TDataName = (X, Y, Z);
TData = array [TDataName] of Double;
TCalcData = class
private
FData: TData;
protected
function GetValue(Name: TDataName): Double;
procedure SetValue(Name: TDataName; AValue: Double);
public
property Value[Name: TDataName]: Double read GetValue write SetValue; default;
end;
TInputBlock = class
private
FSource: TCalcData;
FDataName: TDataName;
protected
procedure SetValue(Value: Double);
public
constructor Create(Source: TCalcData; DataName: TDataName);
end;
..
procedure TInputBlock.SetValue(Value: Double);
begin
if Value <> FSource[FDataName] then
FSource[FData] := Value;
end;
..
InpX := TInputBlock.Create(MyCalcData, X);
Statt F_X und F_Y also ein Array und ein passender Aufzählungstyp um auf "X" und "Y" zuzugreifen.
Grüsse, Dirk