Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Beschränkter Bereich für Variable

  Alt 28. Jan 2006, 21:14
Moin Zusammen,

@Chewie:
Das funktioniert leider nicht.
Ohne Range Checking wird einfach weitergezählt, und mit bekommt man eine Excpetion.

@nupset:
Auch wenn Dir das nicht weiterhelfen kann, möchte ich, der Vollständigkeit halber, noch eine Variante beitragen:

In D2006 kann man sich einen entsprechenden Typen mit Hilfe von operator overloading deklarieren:

Delphi-Quellcode:
interface

type
  TOneToThree = record
    var Value : integer;
    class operator Implicit(Value : TOneToThree) : integer;
    class operator Implicit(Value : integer) : TOneToThree;
    class operator inc(Value : TOneToThree) : TOneToThree;
    class operator dec(Value : TOneToThree) : TOneToThree;
  end;

implementation

class operator TOneToThree.Implicit(Value: TOneToThree): integer;
begin
  Result := Value.Value;
end;

class operator TOneToThree.dec(Value: TOneToThree): TOneToThree;
begin
  case Value.Value of
    2,3 : Result.Value := Value.Value-1;
    else Result.Value := 3;
  end;
end;

class operator TOneToThree.Implicit(Value: integer): TOneToThree;
begin
  if Value > 3 then begin
    Result.Value := 1;
  end else begin
    if Value < 1 then begin
      Result.Value := 3;
    end else begin
      Result.Value := Value;
    end;
  end;
end;

class operator TOneToThree.inc(Value: TOneToThree): TOneToThree;
begin
  case Value.Value of
    1,2 : Result.Value := Value.Value+1;
    else Result.Value := 1;
  end;
end;
Deklariert man sich jetzt eine Variable vom Typ TOneToThree, so kann dieser ein beliebiger integer-Wert zugewiesen werden, der in den Bereich von 1 bis 3 gezwungen wird, ausserdem wird der Bereich bei Verwendung von inc/dec eingehalten.
Man kann das Ganze natürlich noch erweitern, so dass, z.B., auch + und - sich entsprechend verhalten.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat