Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#6

AW: Feld nur über Property zugreifen

  Alt 24. Mai 2024, 14:26
Alternativer Vorschlag ohne Vererbung:
Delphi-Quellcode:
type
  TSafeInteger = record
  strict private
    FValue: Integer;
  public
    class operator Implicit(A: TSafeInteger): Integer; overload;
    class operator Implicit(A: Integer): TSafeInteger; overload;
  end;

class operator TSafeInteger.Implicit(A: TSafeInteger): Integer;
begin
  Result := A.FValue;
end;

class operator TSafeInteger.Implicit(A: Integer): TSafeInteger;
begin
  if A < 0 then
    Result.FValue := 0
  else
    Result.FValue := A;
end;

type
  TTest = class
  strict private
    fID: TSafeInteger;
    function GetID: Integer;
    procedure SetID(value: integer);
  private
    procedure doWork;
  public
    property ID:Integer read GetID write SetID;
  end;

procedure TTest.doWork;
begin
  fID := -10; // hier wird intern eine 0 geschrieben!

// aber das geht halt nicht:
// fID.FValue := -10;
end;

function TTest.GetID: Integer;
begin
  result := fID;
end;

procedure TTest.SetID(value: integer);
begin
  fID := value;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat