Hola STX y bienvenido a delphi :)
Mirando tu código veo que utilizás la función
Copy() para obtener un caracter de la cadena "abec".
Loa función
Copy(Source, Index, Cant) funciona obteniendo un substring de
Source, a partir del índice
Index con
Cant cantidad de caracteres.
Vos en este caso estas buscando que te devuelva un único caracter, por eso quiero contarte que los Strings en Delphi son tratados como vectores de caracteres. Es decir, son un
Array[] of Char.
En vez de usar ese
al := al + copy(abec, Random(36) + 1, 1); podrías hacer esto:
Además, cuando utilices
Random() necesitás inicializar el generador de números random, es decir necesitás usar
Randomize; una única vez antes de usar
Random().
Por ejemplo:
Código: Seleccionar todo
begin
Randomize;
abec := 'abcdefghijklmnopqrstuvwxyz1234657890';
For a := 1 To sCiclo do
al := al + abec[Random(36) + 1];
Result := al;
end;
Otro dato interesante que te puedo contar es que
Result es una variable temporal que se genera automáticamente al entrar en una función (esa misma que bien sabés que devuelve el resultado). Bueno, lo interesante es que en vez de utilizar la variable "al" podés utilizar "Result" desde el principio, simplemente limpiala antes de empezar ;)
Código: Seleccionar todo
begin
Randomize;
Result := '';
abec := 'abcdefghijklmnopqrstuvwxyz1234657890';
For a := 1 To sCiclo do
Result := Result + abec[Random(36) + 1];
end;
Y así usás un poquito menos de memoria.
Espero que no te tomes a mal todo esto, pero es que cuando veo gente que se interesa en Delphi me agarra emoción y pretendo hacerlos profesionales cuanto antes
Saludos!!!