Ver Mensaje Individual
  #20  
Antiguo 12-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Reputación: 24
ixMike Va por buen camino
Volvamos a ver mi código:

Código Delphi [-]
var
  n, Numero: Integer;
begin
  Numero:=0; //Damos un valor inicial al número
  for n:=Lenght(Edit1.Text) downto 1 do
    begin
      If Edit1.Text[n]='1' then //Si el número es un uno
       Inc(Numero, Power(2, Length(Edit1.Text)-n));
    end;
ShowMessage('El binario '+Edit1.Text' equivale al número entero '+IntToStr(Numero));
end;

Lenght(Edit1.Text) es lo que tú quieres llamar cantidad, pero si así te aclaras mejor, pues entonces hazlo

If Edit1.Text[n]='1' then significa "si el carácter n es uno entonces...". Así es como discrimino al cero.

La función Inc incrementa la variable Numero en la cantidad que se le dice en el segundo parámetro. Estas dos líneas hacen lo mismo:

Código Delphi [-]
Inc(Numero, 2);
Numero:=Numero + 2;

Lo que hago es incrementarlo la potencia de dos, teniendo en cuenta que el exponente es el orden del carácter leído, comenzando por la derecha y desde cero. Si te fijas, cantidad - n ya hace esto (al principio vale 0, y al final cantidad - 1)

A ver si de esta forma te aclaras más:

Código Delphi [-]
var
  n, Cantidad, Numero: Integer;
begin
  Numero:=0; //Damos un valor inicial al número
  Cantidad:=Lenght(Edit1.Text); //Indicamos la cantidad
  for n:=Cantidad downto 1 do
    begin
      If Edit1.Text[n]='1' then //Si el número es un uno
       Numero:=Numero + Power(2, Cantidad - n);
    end;
ShowMessage('El binario '+Edit1.Text' equivale al número entero '+IntToStr(Numero)); //Mostramos un mensaje con los datos
end;

¿Mejor así?

Salu2.
Responder Con Cita