Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-03-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Ya os dije que volvería...

He estado viendo estó de pasar de decimal > binario y lo que llevo de código es:

Código Delphi [-]
  Binario:=strtofloat(edit1.text);
  IF Binario > 1 then
                    begin
                    Division:= Binario div 2;
                    Resto:= Binario mod 2;

Bueno... a lo que voy, necesito una funcion que me repita el proceso hasta que el numero sea mayor que 1. (Para pasar de bin > dec había que dividir entre 2 y quedarse el resto).

Bueno, ese comando es while (esto lo aprendi por mi cuenta). Pero el problema:
Mi lindo profesor no me a hablado de while...

¿Cómo lo uso? ¿Me enseñais?

Gracias
Responder Con Cita
  #2  
Antiguo 13-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
While condición do acción

Donde condición puede ser cualquier cosa (true, false, x>5, caption='hola'...)
y acción el código que quieres poner (si es más de una instrucción, debes encerrarlo entre begin-end; )

Tu código sería así:

Código Delphi [-]
Function DecimalToBinario(Decimal: Integer): String;
var
  Resultado: String;
begin
Resultado:='';
While Decimal > 1 do
  begin
    Resultado:=Chr((Decimal mod 2)+48)+Resultado; //Añade delante el último dígito del resto obtenido
    Decimal:= Decimal div 2; //Lo dividimos entre dos para el siguiente paso del bucle
  end;
Resultado:=Chr(Decimal+48)+Resultado; //El último que nos queda
Result:=Resultado;



Creo que funciona. De todas formas, en los enlaces que te pasé ya viene alguno más eficiente


Salu2.


Edito: el método es para números enteros, he tenido una pequeña confusión. Para números decimales la cosa se complica. Estoy investigando.

Última edición por ixMike fecha: 13-03-2008 a las 22:48:04.
Responder Con Cita
  #3  
Antiguo 13-03-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Hola, puse el código y segun él... el binario de 14 sería 100101010011111011001000 y en realidad es 1110.

¿Por qué? xD

Otra cosa, muchas gracias compae xD... y me podrías explicar eso de

Resultado:=Chr((Decimal mod 2)+48)+Resultado; //Añade delante el último dígito del resto obtenido

Resultado:=Chr(Decimal+48)+Resultado; //El último que nos queda

"Las palabras en negrita". ¿Por qué sumas 48? ¿Qué es Chr? Ya había mirado la ayuda delphi, pero no tengo ni idea, parece que vuelve a un valor ASCIII o algo así :S
Responder Con Cita
  #4  
Antiguo 13-03-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
¿Al codigo le falta decirle que decimal es edit1.text? O me lo parece a mi jajajaja
Responder Con Cita
  #5  
Antiguo 13-03-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Question

Aquí está el código con algunos detalles que faltaba sin importancia:
Código Delphi [-]
var
  Resultado: String;
  decimal: integer;
begin
Resultado:='';
decimal:=strtoint(edit1.text);
While Decimal > 1 do
  begin
    Resultado:=Chr((Decimal mod 2)+48)+Resultado; //Añade delante el último dígito del resto obtenido
    Decimal:= Decimal div 2; //Lo dividimos entre dos para el siguiente paso del bucle
  end;
Resultado:=Chr(Decimal+48)+Resultado; //El último que nos queda
edit2.text:=(resultado);
end;

"Muchas gracias .... de verdad.... una cosita ¿dónde puedo mirar las medias para entrar a la universidad... las notas de corte ?(me interesan las de informática).
Responder Con Cita
  #6  
Antiguo 13-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 24
ixMike Va por buen camino
Veamos.

El fallo no sé a qué se debe, ahora lo compruebo.

En cuanto a Chr, deberías mirar la ayuda Delphi más detenidamente, está bastante clara .

Chr devuelve el carácter del código ASCII que le indiques. El del cero es 48, y el del 1 es 49, ¿entiendes ahora porqué hago la suma?. Recuerda que resultado es un string.

Al código no le faltaba nada, era una función a la que le pasabas un integer y te devolvía el valor binario en un string. Lo que tú has hecho ha sido adaptar a algún evento (un clic supongo) de un botón de tu programa

Aquí tienes cómo se hace para pasar números con coma flotante a binario (e inversa), pero a mano: http://es.geocities.com/jeeesusmeeer...o/binario.html

Para las notas, sólo entra en la página de la universidad a la que quieras acceder, y busca un poco.

Salu2.
Responder Con Cita
  #7  
Antiguo 13-03-2008
Avatar de kbaby
kbaby kbaby is offline
Miembro
 
Registrado: oct 2007
Ubicación: Granada
Posts: 178
Poder: 19
kbaby Va por buen camino
Lo del Chr sigo sin entenderlo ... no sé porque se usa... y pasarlo a mano los numeros claro que se
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir un integer en Real osea IntToReal Kmef Varios 2 24-10-2007 19:40:34
Convertir a binario cadena de caracteres wgfs Varios 0 28-10-2006 00:58:28
Convertir una cifra de tipo real a su cantidad en letras reina Varios 7 11-08-2005 18:16:31
Como edito un variable de tipo real??? Rafe Varios 2 07-07-2005 01:15:45
Convertir Archivos DFM de binario a Texto (Text DFM) DiDi Varios 4 21-04-2005 19:39:43


La franja horaria es GMT +2. Ahora son las 10:38:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi