Aqui os dejo este pequeño code, estoy empezando en delphi y voy avanzando poco a poco! Gracias a fakedoor que me ilumino xD

Código: Seleccionar todo

function aleatorio(var sCiclo : Integer) : String;
 var
 a : Integer;
 abec : String;
 al : String;

 begin
  abec := 'abcdefghijklmnopqrstuvwxyz1234657890';
  For a := 1 To sCiclo   do
  al := al + copy(abec, Random(36) + 1, 1);
  Result := al;
 end;  
Salu2!

Mostrar/Ocultar

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:

Código: Seleccionar todo

al := al + abec[Random(36) + 1];
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!!!
Responder

Volver a “Fuentes”