biraz araştırınca viewtopic.php?t=2226&highlight=random burada Gkimirti Beye ait güzel bir kod buldum ama
kendi programıma uyarlayamadım.denemelerimden birisi:
function DizideAra(val: Integer; d: array of Integer): Boolean;
var
i: Integer;
begin
result := False;
for i := 1 to listbox1.count do
if d[i] = val then
begin
result := True;
exit;
end
end;
procedure Tform1.sirala;
var
d: array[1..50] of Integer; // buraya 50 yerine listbox1.count yazınca hata veriyor
i, val: Integer;
begin
for i := 1 to listbox1.count do
d[i] := 0;
for i := 1 to listbox1.count do
begin
repeat
val := Random(listbox1.count);
sleep(1);
if val = 0 then
continue;
until not DizideAra(val, d);
//diziye ekle
d[i] := val;
end;
//dizimiz tamamdır
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure sirala(aded: Integer; var liste: TStringList);
var
d: array of Integer;
i, val: Integer;
function DizideAra(val: Integer; d: array of Integer): Boolean;
var
i, l: Integer;
begin
result := False;
l := Length(d);
for i := 1 to l do
if d[i] = val then
begin
result := True;
exit;
end
end;
begin
SetLength(d, aded);
for i := 1 to aded do
d[i] := 0;
for i := 0 to aded - 1 do
begin
repeat
val := Random(aded);
sleep(1);
if val = 0 then
continue;
until not DizideAra(val, d);
//diziye ekle
d[i] := val;
//listeye ekle
liste.Add(IntToStr(val));
end;
//dizimiz tamamdır
end;
procedure TForm1.Button1Click(Sender: TObject);
var
liste: TStringList;
begin
liste := TStringList.Create;
sirala(50, liste);
Memo1.Lines.Assign(liste);
liste.Free;
end;
end.