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
Genera password - parole.pas

parole.pas

Caricato da: Poggi Marco
Scarica il programma completo

  1. unit parole;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes, SysUtils;
  9.  
  10. type Chiave=class
  11.   private
  12.     valori:string;
  13.     lunghezza:integer;
  14.     ripetizioni:boolean;
  15.     minuscole:boolean;
  16.     maiuscole:boolean;
  17.     numeri:boolean;
  18.     simboli:boolean;
  19.     procedure setRipetizioni(rip:boolean);
  20.     procedure setMaiuscole(valore:boolean);
  21.     procedure setNumeri(valore:boolean);
  22.     procedure selezionaValori;
  23.     procedure setLungheza(valore:integer);
  24.     procedure setSimboli(valore:boolean);
  25.     procedure setMinuscole(valore:boolean);
  26.   public
  27.     constructor crea(l:integer);
  28.     property estensione:integer read lunghezza write setLungheza;
  29.     property doppi:boolean read ripetizioni write setRipetizioni;
  30.     property lettereMaiuscole:boolean read maiuscole write SetMaiuscole;
  31.     property lettereMinuscole:boolean read minuscole write Setminuscole;
  32.     property punteggiatura:boolean read simboli write setSimboli;
  33.     property alfanumerico:boolean read numeri write setNumeri;
  34.     function singolo:string;
  35. end;
  36.  
  37. implementation
  38.  
  39. procedure Chiave.setRipetizioni(rip:boolean);
  40. begin
  41.   ripetizioni:=rip;
  42.   selezionaValori
  43. end;
  44.  
  45. procedure Chiave.selezionaValori;
  46. var i:integer;
  47.     testAzzeramento:boolean;
  48. begin
  49.   valori:='';
  50.   testAzzeramento:=minuscole or maiuscole or numeri or simboli;
  51.   if not testAzzeramento then minuscole:=True;
  52.   if minuscole then
  53.   begin
  54.     i:=ord('a');
  55.     while i<=ord('z') do
  56.     begin
  57.       valori:=valori+char(i);
  58.       i:=i+1;
  59.     end;
  60.   end;
  61.   if maiuscole then
  62.   begin
  63.     i:=ord('A');
  64.     while i<=ord('Z') do
  65.     begin
  66.       valori:=valori+chr(i);
  67.       i:=i+1;
  68.     end;
  69.   end;
  70.   if numeri then valori:=valori+'0123456789';
  71.   if simboli then valori:=valori+'\|!"£$%&/()[]{}+-*/@#§_,.;:=?^'
  72. end;
  73.  
  74. constructor Chiave.crea(l:integer);
  75. begin
  76.   self.estensione:=l;
  77.   maiuscole:=True;
  78.   self.ripetizioni:=False;
  79.   self.numeri:=True;
  80.   self.simboli:=True;
  81.   selezionaValori;
  82.   randomize;
  83. end;
  84.  
  85. procedure  Chiave.setLungheza(valore:integer);
  86. begin
  87.   valore:=abs(valore);
  88.   if (valore>=4) and (valore<=32) then lunghezza:=valore
  89.   else lunghezza:=8;
  90. end;
  91.  
  92. function Chiave.singolo:string;
  93. var i,generato:integer;
  94.     copiaSacco,risultato:string;
  95. begin
  96.  copiaSacco:=valori;
  97.  risultato:='';
  98.  for i:=1 to lunghezza do
  99.  begin
  100.    generato:=1+random(length(copiaSacco));
  101.    risultato:=risultato+copiaSacco[generato];
  102.    if (not ripetizioni) and (length(copiaSacco)>1) then
  103.       Delete(copiaSacco, generato, 1);
  104.  end;
  105.  singolo:=risultato;
  106. end;
  107.  
  108. procedure Chiave.setMaiuscole(valore:boolean);
  109. begin
  110.  maiuscole:=valore;
  111.  selezionaValori
  112. end;
  113.  
  114. procedure Chiave.setNumeri(valore:boolean);
  115. begin
  116.  numeri:=valore;
  117.  selezionaValori
  118. end;
  119.  
  120. procedure Chiave.setSimboli(valore:boolean);
  121. begin
  122.  simboli:=valore;
  123.  selezionaValori
  124. end;
  125.  
  126. procedure Chiave.setMinuscole(valore:boolean);
  127. begin
  128.  minuscole:=valore;
  129.  selezionaValori;
  130. end;
  131.  
  132. end.