Cita:
Empezado por wlad
como puedo hacer para que una variable valga 2 valores al mismo tiempo y pueda ejecutar el mismo procedure,pa esos dos distintos valores
|
Creo Entender lo que mencionar, si es asi puedes darte una idea de como una variable puede tener 2 o mas Valores dando el formato que tu decidas:
1er Caso.
Código:
cVar := '001Juan';
Esta variable es de tipo String y puede contener 2 Valores que puedes resuperar mediante alguna Instriccion.
nNumero := strtoint(Copy(cVar,1,3)) ; // Esto seria = 1
cNombre := strtoint(Copy(cVar,4)) ; // Esto seria = Juan
Entonces en la misma Variable cVar estarias Almacenando 2 Valores..
2do Caso.
Código:
Puedes Usar Variables de tipo registro
Type record cVar
Numero:integer;
Nombre:String
end;
Y Usarla Asi.
cVar.Numero := 1;
cVar.Nombre := 'Juan';
3er Caso
Código:
Paso de Variables entre funciones con Paso de Variables por Valor
function XValor(pValor:Variant):Integer; overload;
begin
XValor := 0;
if pValor>1 then
XValor := pValor;
end;
function XValor(pValor:Variant):String; overload;
begin
XValor := '';
if pValor <> '' then
XValor := pValor;
end;
Usandola seria asi:
nSuma := nSUma + XValor(1);
cNombre := 'Perez ' + XValor('Juan');
4o Caso
Código:
procedure XValor(pValor:Integer);
begin
pValor := pValor + 100;
end;
Usandola seria asi:
x := 50; // x = 50
xValor(x); // x= 150
Si checas el Valor de X cambio al pasarla por la Funcion..
Este ejemplo se aplica muy sencillamente en el caso de una funcion para
obtener el factorial de un Numero donde utilizar la recursividad para resolver
el valor usando y cambiando el valor de la variable una y otra vez..
function Fact(nValor:integer):integer;
begin
if nValor < 1 then Result := 1
else Result := nValor * Fact(nValor-1) ;
end;
Ejecutandolo seria
showmessage('El Factorial de 5 = ',inttostr(Fact(5)));
// Si checas en la Misma Funcion cambia el Valor de la variable nValor
ESPERO TE SIRVE UN POCO DE AYUDA...