Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Karten: Integer;
Ausgabe: String;
x : Integer;
Liste1: TStringList;
begin
Memo1.Lines.Clear;
Randomize; // Nur einmal beim Programmstart aufrufen
for x:= 1 to 32 do
begin
Karten:=Random(32)+1;
Liste1:=TStringList.Create; // Speicherleck 32x erzeugt und 1x freigegeben (s.u.)
if Karten=1 then
begin
Ausgabe:='Kreuz Bube';
Liste1.insert(1,'1'); // Liste1 hat zu diesem Zeitpunkt 0 Einträge! ;o)
end
[...]
else if Karten=32 then
begin
Ausgabe:='Karo 7';
Liste1.insert(32,'32');
end;
Memo1.Lines.Add(Ausgabe);
end;
Liste1.Free;
end;
Liste1 als eine temporäre Instanz sollte auch hier wie folgt deklariert werden (dann gibt es auch keine Speicherlecks)
Delphi-Quellcode:
Liste1 := TStringList.Create;
try
...
finally
Liste1.Free;
end;
Generell zu den Karten, dem Mischen und der Problematik mit den doppelten Karten:
Warum gibt es beim Spiel im RealLife keine doppelten Karten?
Wenn du das raus hast, dann hast du auch den Ansatz wie man es programmiert
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)