Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Random Selector - Main.pas

Main.pas

Caricato da: Piero Tofy
Scarica il programma completo

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Math,
  7.   Dialogs, StdCtrls;
  8.  
  9. type
  10.   TFrmMain = class(TForm)
  11.     UserList: TListBox;
  12.     BtnAdd: TButton;
  13.     txtNumber: TEdit;
  14.     RandomList: TListBox;
  15.     BtnGenera: TButton;
  16.     BtnRemoveLast: TButton;
  17.     procedure BtnAddClick(Sender: TObject);
  18.     procedure BtnRemoveLastClick(Sender: TObject);
  19.     procedure BtnGeneraClick(Sender: TObject);
  20.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  21.   private
  22.     { Private declarations }
  23.   public
  24.     { Public declarations }
  25.   end;
  26.  
  27. var
  28.   FrmMain: TFrmMain;
  29.  
  30. implementation
  31.  
  32. {$R *.dfm}
  33.  
  34. procedure TFrmMain.BtnAddClick(Sender: TObject);
  35. var
  36.   Check: integer;
  37. begin
  38.   if txtNumber.Text <> '' then begin
  39.     try
  40.       { Proviamo a convertire, se no, scatena l'eccezzione }
  41.       Check := StrToInt(txtNumber.Text);
  42.       UserList.AddItem(txtNumber.Text,nil);
  43.     except
  44.       MessageBox(0,'Non è un valore numerico!','Avviso',0);
  45.     end;
  46.   end;
  47.   txtNumber.Text := '';
  48.   txtNumber.SetFocus;
  49. end;
  50.  
  51. procedure TFrmMain.BtnRemoveLastClick(Sender: TObject);
  52. begin
  53.   if UserList.Count > 0 then UserList.Items.Delete(UserList.Count-1);
  54. end;
  55.  
  56. procedure TFrmMain.BtnGeneraClick(Sender: TObject);
  57. var
  58.   Items, OriginalItems, RndNum, Count: integer;
  59.   TmpList: TStringList;
  60.   Hours, Mins, Secs, MilliSecs : Word;
  61. begin
  62.   { resetta la lista e inizializza le variabili }
  63.   RandomList.Clear;
  64.  
  65.   Items := UserList.Count-1;
  66.   OriginalItems := Items;
  67.   TmpList := TStringList.Create;
  68.  
  69.  
  70.  
  71.   { Salva la lista in una lista temporanea }
  72.   for Count := 0 to Items do
  73.     TmpList.Add(UserList.Items.Strings[Count]);
  74.  
  75.  
  76.   { Setta il seme per la generazione di numeri casuali
  77.   in base al numero di millisecondi dell'ora attuale }
  78.   DecodeTime(now, Hours, Mins, Secs, MilliSecs);
  79.   RandSeed := MilliSecs;
  80.  
  81.   while UserList.Count <> 0 do
  82.   begin
  83.     { Genera un numero casuale }
  84.     RndNum := RandomRange(0,Items);
  85.  
  86.     Items := UserList.Count-1;
  87.  
  88.     { Preleva il numero e lo swappa }
  89.     RandomList.AddItem(UserList.Items.Strings[RndNum],nil);
  90.     UserList.Items.Delete(RndNum);
  91.   end;
  92.  
  93.   { Ripristina la lista }
  94.   for Count := 0 to OriginalItems do
  95.     UserList.AddItem(TmpList.Strings[Count],nil);
  96. end;
  97.  
  98. procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
  99. begin
  100.   MessageBox(0,'Visita http://www.pierotofy.it per scaricare altri programmi utili gratuitamente.','Programma by Piero Tofy 2005',0);
  101. end;
  102.  
  103. end.