Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-01-2008
BetoAlonso BetoAlonso is offline
Miembro
 
Registrado: jul 2003
Posts: 113
Poder: 21
BetoAlonso Va por buen camino
Question Operacion con Hexadecimales

Saludos

Tengo los siguientes dato en hexadecimal

E1 y 68

quisiera que alguien me indique como sumar ambos valores porke los tengo en variables de tipo string.

gracias.
Responder Con Cita
  #2  
Antiguo 09-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Código Delphi [-]
Resultado := Format('%x', [StrToInt('$' + Valor1) + StrToInt('$' + Valor2])]);

La variable resultado también debe ser un string.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 09-01-2008
BetoAlonso BetoAlonso is offline
Miembro
 
Registrado: jul 2003
Posts: 113
Poder: 21
BetoAlonso Va por buen camino
Gracias jachguate

Confirmame si el resultado esta en hexadecimal ?


algo mas tengo que llevar a cabo la operacion and deberia ser algo asi resultado= ( HEX( X ) AND 0FF ) , donde X es decimal , el resultado estara en hexadimal que luego se tendra que convertir en decimal

esto veo ke es posible en C pero aki en delphi no tengo idea de como hacerlo.

gracias por tu atencion
Responder Con Cita
  #4  
Antiguo 09-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Claro que está en hexadecimal, si no para que te lo recomendaría??

Sobre la confusión que tenes entre decimal y hexadecimal, te recuerdo que esa es solo la forma en que veremos a un entero representado como string. La máquina, al final de cuentas, solo trabaja con ceros y unos, es decir, en binario. Así que si ya tenes un entero, no está ni en decimal, ni en hexadecimal, y por tanto no hace falta convertirlo de uno a otro, ni en c, ni en delphi.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 09-01-2008 a las 16:23:41.
Responder Con Cita
  #5  
Antiguo 07-02-2008
santiaguinillo santiaguinillo is offline
Miembro
 
Registrado: abr 2007
Ubicación: Viladecans, Barcelona
Posts: 24
Poder: 0
santiaguinillo Va por buen camino
Unhappy Hexadecimal y TelSerialPort

Hola a todos,

utilizo TelSerialPort para enviar datos por puerto serie (COM1).
Utilizo la función de este componente writestr para enviar datos.

Tengo un problema con este método de envío:

- Resulta que los datos se tienen que recibir en hexadecimal y utilizo un Tedit para escribir los valores transformando el valor con la función STRTOHEX que un forero de clubdelphi escribió o bien strtoint y inttohex.

- La cuestión es que toda esta transformación queda en que cuando me pasa a hexadecimal me pasa la transformación de ASCII a Hexadecimal (http://www.asciitable.com/) de forma que si pongo un 6 en realidad me envía un 36 que según en la tabla es correcto.

- Lo que necesito es enviar un 6 y que sea un 6 hexadecimal, si escribo algo como $6 o $06 o 0x06 siempre me envia un 6 en ascii y queda un 36 hex.

- La única forma que me ha funcionado es escribiendo directamente en código:
SP.writestr(#6);

pero no sé como hacerlo para introducir este tipo de valor desde un TEdit.

¿Cómo podría enviar los datos de forma correcta?

Última edición por santiaguinillo fecha: 07-02-2008 a las 17:45:18.
Responder Con Cita
  #6  
Antiguo 07-02-2008
santiaguinillo santiaguinillo is offline
Miembro
 
Registrado: abr 2007
Ubicación: Viladecans, Barcelona
Posts: 24
Poder: 0
santiaguinillo Va por buen camino
Solución

Bueno, pues resulta que #6 es 6 en decimal, que según la tabla ASCII es 6 en hexadecimal.

Si utilizo el tipo Variant y:
var:
variante:variant;
begin
variante := #6;
SP.writestr(variante);
end;
funciona correctamente. Así que tendré que hacer una estructura de transformación de los 127 carácteres que hay en la tabla ascii.

...A no ser que a alguien se le ocurra algo mejor. dios quiera que sí!!!
Responder Con Cita
  #7  
Antiguo 07-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Supongo que queres enviar caracteres de control (o secuencias de escape) mezcladas con caracteres imprimibles.

Lamentablemente en un Edit no se puede introducir caracteres no imprimibles (menores a ascii 32), no es un asunto de hexadecimal o no hexadecimal.

Cuándo he enfrentado esta situación, he encontrado dos soluciones.

Una, poner otro edit donde se ingrese el valor numérico del caracter que se quiere introducir, (por ejemplo 6) y con un botón, añadir ese caracter a la cadena del edit "a enviar", algo como:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  if trim(eCaracter.Text) <> ''
    eDatosEnviar.Text := eDatosEnviar.Text + Chr(StrToInt(eCaracter.Text));
end;

Otra solución es poner un "tablero" de botones que envíen ciertos comandos preestablecidos. Por ejemplo, un botón cuyo caption sea "Encender luz", y cuya implementación podría ser:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  EnviarComando(#6#32 + eParametros.Text);
end;

Por ejemplo...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 08-02-2008
santiaguinillo santiaguinillo is offline
Miembro
 
Registrado: abr 2007
Ubicación: Viladecans, Barcelona
Posts: 24
Poder: 0
santiaguinillo Va por buen camino
Thumbs up Agradecimientos

Hola Jachguate,

pues la 2ª idea me ha parecido más interesante por el motivo que explicas de que los 32 primeros carácteres no se pueden representar con un TEdit.

Así que los 127 botones de la tabla ascii se tendrían que hacer a mano.

Menos mal que puedo utilizar una tabla de transformación (algo como un par de arrays de variant y string o algo por el estilo) y que los botones finalmente no los tengo que hacer.

La comunicación entre el dispositivo está basada en dos organigramas y las posibilidades de respuesta son definidas así que finalmente no tendré que hacer botones si no es para hacer pruebas.

Un saludo y gracias por todo.

Última edición por santiaguinillo fecha: 08-02-2008 a las 09:31:18.
Responder Con Cita
  #9  
Antiguo 08-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por santiaguinillo Ver Mensaje
Así que los 127 botones de la tabla ascii se tendrían que hacer a mano.

Menos mal que puedo utilizar una tabla de transformación (algo como un par de arrays de variant y string o algo por el estilo) y que los botones finalmente no los tengo que hacer.
Bueno, hoy me dieron ganas de evitarles la molestia de hacer una tabla ASCII a mano, adjunto encontrarás algo de lo que yo he hecho para obtener los valores decimales y hexadecimales a partir de seleccionar cualquier caracter de una tabla ASCII.

Aunque esto es parte de un desarrollo propio no tengo ningún problema de que lo usen y por supuesto que lo mejoren, quiero decir, me sentiria agradecido de sus comentarios.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Última edición por egostar fecha: 02-01-2009 a las 22:38:35.
Responder Con Cita
  #10  
Antiguo 14-02-2008
santiaguinillo santiaguinillo is offline
Miembro
 
Registrado: abr 2007
Ubicación: Viladecans, Barcelona
Posts: 24
Poder: 0
santiaguinillo Va por buen camino
Muchísimas gracias egostar,

en cuanto haga pruebas te comento mi opinión.

Un saludo,
santi
Responder Con Cita
  #11  
Antiguo 26-02-2008
[FGarcia] FGarcia is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Cordoba, Veracruz, México
Posts: 1.123
Poder: 20
FGarcia Va por buen camino
Este hilo se me habia pasado pero muy bueno, hay dudas que tengo sobre esto de los caracteres de control. Jachguate ¿entonces como le hace Hyperterminal para representar los caracteres de control ? He visto que lo hace con una serie de simbolos como caritas, notas musicales y similares ¿existe algun otra tabla de codigos?

Egostar ya baje tu tabla muy buena!!
Responder Con Cita
  #12  
Antiguo 26-02-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por FGarcia Ver Mensaje
Este hilo se me habia pasado pero muy bueno, hay dudas que tengo sobre esto de los caracteres de control. Jachguate ¿entonces como le hace Hyperterminal para representar los caracteres de control ? He visto que lo hace con una serie de simbolos como caritas, notas musicales y similares ¿existe algun otra tabla de codigos?
Los representa con los caracteres ASCII, si ves una tabla ASCII ahi vas a ver las "caritas", tambien depende de la fuente que use.

Cita:
Empezado por FGarcia Ver Mensaje
Egostar ya baje tu tabla muy buena!!
Espero te sirva de algo, gracias por bajarla.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
Respuesta



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
Leer valores hexadecimales del registro Feñiz OOP 1 28-01-2015 02:11:46
Modificar contenido de "direcciones" hexadecimales (?) wofox Varios 0 07-12-2007 00:50:55
Adminsitrar archivos relacionados a una operación Oxa78 Varios 4 16-02-2007 16:50:45
problemas en una operacion de insercion una db alfil123 Conexión con bases de datos 6 06-12-2006 19:31:22
Operación Papa Julián Debates 13 05-05-2005 15:04:52


La franja horaria es GMT +2. Ahora son las 23:37:37.


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