uses math; function GenID:String; var b, x: byte; begin Result := '{'; Randomize; for b:= 1 to 8 do begin if Random(100) > 50 then Result := Result + chr(RandomRange(48,57)) else Result := Result + chr(RandomRange(65,90)); end; Result := Result + '-'; for x:= 1 to 3 do begin for b:= 1 to 4 do begin if Random(100) < 50 then Result := Result + chr(RandomRange(48,57)) else Result := Result + chr(RandomRange(65,90)); end; Result := Result + '-'; end; for b:= 1 to 12 do begin if Random(100) < 50 then Result := Result + chr(RandomRange(48,57)) else Result := Result + chr(RandomRange(65,90)); end; Result := Result + '}'; end; function genkey :string; const Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; var S: string; i, N: integer; begin Randomize; S := ''; for i := 1 to 30 do begin N := Random(Length(Chars)) + 1; S := S + Chars[N]; end; result := S; end; function genkey2(c:integer) :string; const Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; var S: string; i, N: integer; begin if c < 20 then c := 30; Randomize; S := ''; for i := 1 to c do begin N := Random(Length(Chars)) + 1; S := S + Chars[N]; end; result := S; end; procedure TForm1.FormCreate(Sender: TObject); begin memo1.Lines.Add(GenID); memo1.Lines.Add(genkey); memo1.Lines.Add(genkey2(10)); end;