oder TLottoTipp = set of 1..49;
(das Gleiche, wie array of Boolean, nur mit einem Achtel an Speicherverbrauch)
Und trotzdem ist das Bool-Array hierbei schicker, da durch einfache Änderung des Arrays auf
TLottoTipp = array [1..64] of Boolean;
die Klasse immer noch funktioniert.
Und um es ganz flexibel zu gestalten könnte man ein dynamisches Array benutzen und dem Create als Parameter die Anzahl der Tippfelder und Tipps mitgeben
Delphi-Quellcode:
type
TLottoFeld = class
private
FTipp : array of Boolean;
FMarks : integer;
public
constructor Create( AFieldCount, AMarks : integer );
destructor Destroy; override;
procedure Reset; // alle Felder zurücksetzen
procedure FillUp;
end;
procedure TLottoFeld.Reset;
var
idx : integer;
begin
for idx := Low( FTipp ) to High( FTipp ) do
FTipp[ idx ] := False;
end;
constructor TLottoFeld.Create( AFieldCount, AMarks : integer );
begin
inherited;
SetLength( FTipp, AFieldCount + 1 );
FMarks := AMarks;
Reset;
end;
destructor TLottoFeld.Destroy;
begin
SetLength( FTipp, 0 );
inherited;
end;
procedure TLottoFeld.FillUp;
var
idx, Value : integer;
begin
Reset;
for idx := 1 to FMarks do
begin
repeat
Value := Random( High( FTipp ) + 1 );
until not FTipp[ Value ];
FTipp[ Value ] := True;
end;
end;
Jetzt sind die Tipp-Felder allerdings 0 basierend
jedoch auch für die Zukunft gerüstet, falls sich beim Lotto mal was ändert
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)