unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Math,
Dialogs, StdCtrls;
type
TFrmMain = class(TForm)
UserList: TListBox;
BtnAdd: TButton;
txtNumber: TEdit;
RandomList: TListBox;
BtnGenera: TButton;
BtnRemoveLast: TButton;
procedure BtnAddClick(Sender: TObject);
procedure BtnRemoveLastClick(Sender: TObject);
procedure BtnGeneraClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmMain: TFrmMain;
implementation
{$R *.dfm}
procedure TFrmMain.BtnAddClick(Sender: TObject);
var
Check: integer;
begin
if txtNumber.Text <> '' then begin
try
{ Proviamo a convertire, se no, scatena l'eccezzione }
Check := StrToInt(txtNumber.Text);
UserList.AddItem(txtNumber.Text,nil);
except
MessageBox(0,'Non è un valore numerico!','Avviso',0);
end;
end;
txtNumber.Text := '';
txtNumber.SetFocus;
end;
procedure TFrmMain.BtnRemoveLastClick(Sender: TObject);
begin
if UserList.Count > 0 then UserList.Items.Delete(UserList.Count-1);
end;
procedure TFrmMain.BtnGeneraClick(Sender: TObject);
var
Items, OriginalItems, RndNum, Count: integer;
TmpList: TStringList;
Hours, Mins, Secs, MilliSecs : Word;
begin
{ resetta la lista e inizializza le variabili }
RandomList.Clear;
Items := UserList.Count-1;
OriginalItems := Items;
TmpList := TStringList.Create;
{ Salva la lista in una lista temporanea }
for Count := 0 to Items do
TmpList.Add(UserList.Items.Strings[Count]);
{ Setta il seme per la generazione di numeri casuali
in base al numero di millisecondi dell'ora attuale }
DecodeTime(now, Hours, Mins, Secs, MilliSecs);
RandSeed := MilliSecs;
while UserList.Count <> 0 do
begin
{ Genera un numero casuale }
RndNum := RandomRange(0,Items);
Items := UserList.Count-1;
{ Preleva il numero e lo swappa }
RandomList.AddItem(UserList.Items.Strings[RndNum],nil);
UserList.Items.Delete(RndNum);
end;
{ Ripristina la lista }
for Count := 0 to OriginalItems do
UserList.AddItem(TmpList.Strings[Count],nil);
end;
procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MessageBox(0,'Visita http://www.pierotofy.it per scaricare altri programmi utili gratuitamente.','Programma by Piero Tofy 2005',0);
end;
end.