Witam.
Znalazłem w internecie przykładowy kod na losowanie bez powtórzeń, po skompilowaniu niby wszystko działa jak trzeba, właśnie "niby" okazuje się że liczba 120 ZAWSZE jest wylosowana jako ostatnia, w której linijce kodu jest błąd?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FNameList : TStringList;
FNameIndex: Integer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Randomize;
FNameIndex := 0;
FNameList := Tstringlist.Create;
FNameList.LoadFromFile('Liczby.txt');
//FNameList.Add('Name 1');
//FNameList.Add('Name 2');
//FNameList.Add('Name 3');
//FNameList.Add('Name 4');
//FNameList.Add('Name 5');
//FNameList.Add('Name 6');
for i:= 1 to 120 do // shuffle 120 times. its up to you
FNameList.Exchange(Random(FNameList.Count-1), Random(FNameList.Count-1));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if FNameIndex < FNameList.Count then
begin
Memo1.Lines.Add(FNameList.Strings[FNameIndex]);
inc(FNameIndex);
end else showmessage('Done!');
end;
end.
```delphi
```