Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: LottoTippErstellen

  Alt 1. Sep 2011, 23:42
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)

Geändert von Sir Rufo ( 1. Sep 2011 um 23:50 Uhr)
  Mit Zitat antworten Zitat