Primeiramente vamos precisar de: 2 GroupBox (opcional), 3 CheckBox, 2 Label, 2 Edit, 2 Button, 1 XPManifest (opcional).
1° Coloque os 3 CheckBox dentro do GroupBox1, e o resto (menos o XPManifest) no GroupBox2.
2° Renomeie (Text ou Caption não o Name) os componentes (são apenas sugestões)
CheckBox1 para "Letras" CheckBox2 para "Números" CheckBox3 para "Especiais" Label1 para "Senha" Label2 para "Quantidade de dígitos" Edit1 para "Clique em Gerar" Edit2 para "10" ou qualquer outro número Button1 para "Gerar" Button2 para "Copiar"
3° Coloque True no Checked do CheckBox1 e 2
Agora vamos ao que interessa =D
Deixe o OnClick do Button1 assim:
Código:
procedure TForm1.Button1Click(Sender: TObject); var I,Max : Integer; S : String; begin if Edit2.Text <> '' then begin if (CheckBox1.Checked = True) or (CheckBox2.Checked = True) or (CheckBox3.Checked = True) then begin Randomize; Max:=StrToInt(Edit2.Text); Edit1.Clear; if CheckBox1.Checked = True then S := S+'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; if CheckBox2.Checked = True then S := S+'0123456789'; if CheckBox3.Checked = True then S := S+'!@#$%¨&*()[]{}<>/?'; for I := 1 to Max do Edit1.Text := Edit1.Text+S[Random(Length(S))+1]; end else begin ShowMessage('Selecione pelo menos um tipo de caractere!'); end; end else begin ShowMessage('Coloque a quantidade de dígitos a serem gerados'); end; end;
Deixe o OnClick do Button2 assim:
Código:
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.SelectAll; Edit1.CopyToClipboard; end;
Código:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', #8, #13]) then begin Key := #0; ShowMessage('Somente números são permitidos!'); end; if Key = #13 then Button1.Click; end;
No primeiro Código verifica se o Edit2 não está vazio, senão retorna uma mensagem de erro.
Logo após verifica se pelo menos um CheckBox está marcado, senão retorna outra mensagem de erro.
Se não retornar erro o código continua. Então adiciona os caracteres na string de acordo com os CheckBox marcados e então gera uma senha no Edit1 baseado na String com a quantidade de dígitos indicado no Edit2
O segundo Code apenas selecciona o texto do Edit1 e copia para a área de transferência
O terceiro Código proíbe que digite um caracteres além de números no Edit2 retornando um erro. E se apertar Enter a senha será gerada.
EXTRA
Para determinar um número mínimo e máximo de dígitos faça assim:Primeiro substitua a linha if Edit2.Text <> '' then para:
Código:
if (Edit2.Text <> '') and (StrToInt(Edit2.Text) >= StrToInt('5')) and (StrToInt(Edit2.Text) <= StrToInt('100')) then
Código:
if Edit2.Text = '' then ShowMessage('Coloque a quantidade de dígitos a serem gerados'); if StrToInt(Edit2.Text) < StrToInt('5') then ShowMessage('Número mínimo de dígitos: 5'); if StrToInt(Edit2.Text) > StrToInt('100') then ShowMessage('Número máximo de dígitos: 100');
Nenhum comentário:
Postar um comentário