Thema: Delphi random zahl genau 2 mal

Einzelnen Beitrag anzeigen

Benutzerbild von Specialwork
Specialwork

Registriert seit: 10. Jan 2003
Ort: Schwall
71 Beiträge
 
Delphi 8 Professional
 
#7
  Alt 30. Apr 2003, 01:07
Hallo Woozy,

Versuchs doch mal so:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Values: TStringList;
    x, y: Integer;
    Rnd: Integer;
    CurrentIndex, NewIndex: Integer;
begin
  Values:=TStringList.Create;
  Values.Duplicates:=dupIgnore;

  // Zufallswerte erzeugen
  While Values.Count < 32 do begin
    Rnd:=random(60);
    Values.Add(inttostr(rnd));
    Values.Add(inttostr(rnd));
  end;

  // Zufallswerte mischen
  y:=random(9999);
  for x:=1 to y do begin
    CurrentIndex:=random(Values.Count);
    NewIndex:=random(Values.Count);
    While CurrentIndex=NewIndex do begin
      CurrentIndex:=random(Values.Count);
      NewIndex:=random(Values.Count);
    end;
    Values.Move(CurrentIndex, NewIndex);
  end;

  // Zufallswerte zuweisen
  for x:=0 to ComponentCount-1 do begin
    if Components[x].ClassType =TSpeedButton then begin
      (Components[x] as TSpeedButton).Tag:=strtoint(Values.Strings[x]);
      if CheckBox1.Checked then begin
        (Components[x] as TSpeedButton).Glyph:=nil;
        (Components[x] as TSpeedButton).Caption:='';
        ImageList1.GetBitmap(strtoint(values.Strings[x]), (Components[x] as TSpeedButton).Glyph);
      end else begin
        (Components[x] as TSpeedButton).Glyph:=nil;
        (Components[x] as TSpeedButton).Caption:=Values.Strings[x];
      end;
    end;
  end;

  Values.Free;
end;
Einziger Nachteil, es werden mehrere gleiche Paare angezeigt.

Gruß, Tom
Angehängte Dateien
Dateityp: zip memo_prototype.zip (614,1 KB, 11x aufgerufen)
Thomas van Veen
Es gibt keine Probleme, nur Lösungen, auf die man nicht gleich kommt !
  Mit Zitat antworten Zitat