Además de lo señalado por Rolphy, déjame decirte que el sistema no debe generar ni crear ninguna constraseña. Se supone que es el usuario el que la crea.
Distinto es que el sistema genere una clave temporal o provisoria y le pida (aunque a mi modo de ver debería ser más una obligación) al usuario en la primera ejecución o inicio de sesión que la cambie por una propia. Para esas claves temporales puede bastar algo tan simple como valerse del uso de la función random y asociar al número alguna letra.
Una idea simple:
const
CARACTERES = 'abcdefghijklmnopkrstuvwxyz1234567890';
var
i: integer;
pass: string;
begin
for i := 1 to LongitudContrasenia do
pass := pass + CARACTERES[Random(Length(CARACTERES)) + 1];
Al finalizar en pass se tiene una "contraseña" de una longitud dada con los caracteres permitidos y definidos en la constante CARACTERES.
Otra alternativa que se estila en algunos sitios es la de tomar el nombre de pila del usuario más los 3 últimos (o primeros) números de su DNI. Luego tomar su fecha de nacimiento y hacer una especie de "mezcla" entre ellos.
Por último: en una base de datos nunca se debería almacenar una contraseña. Ni siquiera cifrada... Que de hecho no se cifran. Lo que se almacena en las DB es un
hash que representa a la contraseña. De ese modo nunca es posible extraer o recuperar la contraseña desde su valor Hash (los algoritmos hash o de reducción no son reversibles). Para identificar al usuario se calcula el hash de lo que ingresa y si resulta ser igual al que está guardado entonces se le habilita el paso.
Saludos,