1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143:
| unit uKeyGen;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, inifiles, StdCtrls, Spin, Buttons;
type TForm5 = class(TForm) msg: TPanel; bbGen: TBitBtn; cbAlpha: TCheckBox; cbZiffer: TCheckBox; cbSonder: TCheckBox; GroupBox1: TGroupBox; seLaenge: TSpinEdit; GroupBox2: TGroupBox; cbCaseSensitive: TCheckBox; lbKeys: TListBox; GroupBox3: TGroupBox; bbSave: TBitBtn; SaveDialog: TSaveDialog; procedure bbSaveClick(Sender: TObject); procedure bbGenClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private ini: tIniFile; procedure ReadIni; procedure WriteAndFreeIni; function CreateKeyString(Alpha, ziffern, sonder, CaseSensitive: boolean): string; function Keys(Zeichen: string; Laenge: integer): string; public end;
var Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.bbGenClick(Sender: TObject); var SchlueselString: string; i: Integer; begin SchlueselString := CreateKeyString(cbAlpha.Checked, cbZiffer.Checked, cbSonder.Checked, cbCaseSensitive.Checked);
lbKeys.Clear; bbSave.Enabled := false; for i := 1 to 20 do lbKeys.Items.Add(Keys(SchlueselString, seLaenge.Value));
bbSave.Enabled := true; end;
procedure TForm5.bbSaveClick(Sender: TObject); var fileName: string; i: Integer; f: textfile; begin saveDialog.Execute; FileName := savedialog.FileName; assignfile(f, filename); if fileexists(Filename) then system.append(f) else system.rewrite(f); for i := 0 to lbKeys.Count - 1 do writeln(f, lbKeys.Items[i]); system.close(f); end;
function TForm5.CreateKeyString(Alpha, ziffern, sonder, CaseSensitive: boolean): string; begin result := ''; if alpha then result := 'abcdefghijklmnopqrstuvwxzy'; if CaseSensitive then result := result + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; if Ziffern then result := result + '0123456789'; if Sonder then result := result + '.,-_:;!$%&/()=?'; end;
procedure TForm5.FormCreate(Sender: TObject); begin msg.Caption := ''; lbKeys.Clear; randomize; ReadIni; bbSave.Enabled := false; end;
procedure TForm5.ReadIni; var IniName: String; begin IniName := copy(paramstr(0),1,length(paramstr(0))-3)+'INI'; ini := tInifile.Create(IniName); cbAlpha.Checked := ini.ReadBool( 'Param', 'Alpha', true); cbZiffer.Checked := ini.ReadBool( 'Param', 'Ziffer', false); cbSonder.Checked := ini.ReadBool( 'Param', 'Sonder', false); cbCaseSensitive.Checked := ini.ReadBool( 'Param', 'CaseSensitive', false); seLaenge.Value := ini.ReadInteger('Param', 'Laenge', 6); end;
procedure TForm5.WriteAndFreeIni; begin ini.WriteBool( 'Param', 'Alpha', cbAlpha.Checked); ini.WriteBool( 'Param', 'Ziffer', cbZiffer.Checked); ini.WriteBool( 'Param', 'Sonder', cbSonder.Checked); ini.WriteBool( 'Param', 'CaseSensitive', cbCaseSensitive.Checked); ini.WriteInteger('Param', 'Laenge', seLaenge.Value); ini.Free; end;
procedure TForm5.FormDestroy(Sender: TObject); begin WriteAndFreeIni; end;
function TForm5.Keys(Zeichen: string; Laenge: integer): string; var i: Integer; begin result := ''; for i := 1 to Laenge do begin result := result + zeichen[random(length(zeichen))+1]; end; end;
end. |