public
procedure allkey(chaine: String; maxlen: Integer);
procedure pOut(chaine:String);
var
Form1: TForm1;
dico: string;
cnt,cnt2,maxlen : integer;
stop : boolean;
//
procedure TForm1.allkey(chaine: String; maxlen: Integer);
var i:integer;
begin
if stop then begin timer1.Enabled:= false; exit; end;
if (Length(chaine) < maxlen) Then
For i := 1 To Length(dico) do allkey(chaine + Midstr(dico, i, 1), maxlen )
else
if (Length(chaine) = maxlen) Then pOut (chaine);
end;
procedure TForm1.pOut(chaine: String);
begin
cnt := cnt+1;
Application.ProcessMessages;
if (cnt mod 10 = 0) then Memo1.lines.Add('');
Memo1.Lines.Strings[Memo1.Lines.Count-1] := Memo1.Lines.Strings[Memo1.Lines.Count-1] + ' ' + chaine;
//Memo1.Lines.Strings[Memo1.Lines.Count-1] := chaine;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
cnt := 0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption := inttostr(cnt-cnt2) + ' results per second';
cnt2 := cnt;
end;
Start :
procedure TForm1.btnStartClick(Sender: TObject);
var i:integer;
begin
timer1.Enabled:=true;
stop := false;
cnt:=0;
cnt2:=0;
Memo1.Clear;
dico:= Edit1.text;
maxlen:=strtoint(Edit2.text);
for i := 1 to maxlen do allkey('',i);
end;
Stop :
procedure TForm1.BtnstopClick(Sender: TObject);
begin
stop := true;
end;
Keine Kommentare:
Kommentar veröffentlichen