Ver Mensaje Individual
  #7  
Antiguo 20-04-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Reputación: 20
mcs Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Código Delphi [-]

function generaletra:String;
var pos:integer;
begin
randomize;
pos:=random(7)+1;
case (pos) of
1:generaletra:='A';
2:generaletra:='B';
3:generaletra:='C';
4:generaletra:='D';
5:generaletra:='E';
6:generaletra:='F';
7:generaletra:='G';
end;
end;
function generanumero:String;
var pos:integer;
begin
randomize;
pos:=random(7)+1;
case (pos) of
1:generanumero:='0';
2:generanumero:='1';
3:generanumero:='2';
4:generanumero:='3';
5:generanumero:='4';
6:generanumero:='5';
7:generanumero:='6';
end;
end;


Estas funciones se pueden simplificar mucho. En mi opinión, quedarían mejor así:

Código Delphi [-]
 
function generaletra:String;
var pos:integer;
begin
  randomize;
  pos:=random(7);
  generaletra=Chr(pos+65);
end;
 
function generanumero:String;
var pos:integer;
begin
  randomize;
  pos:=random(7);
  generanumero=Chr(pos+48);
end;

La explicación es muy simple: primero generamos el valor aleatorio, y luego le sumamos 65 (valor ASCII de 'A') o 48 (valor ASCII de '0'). Obtenemos un codigo ASCII, y con la función Chr() lo convertimos a un carácter.

Saludos,

Marc
Responder Con Cita