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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2011
maunix maunix is offline
Miembro
 
Registrado: jul 2007
Posts: 10
Poder: 0
maunix Va por buen camino
Exclamation Casteo y Migración

Buenos días, escribo el problema porque no he visto nada posteado al respecto y tampoco googleando veo alguna respuesta que cuadre en mi problema.

Tengo un código que anda de maravilas en Delphi 7 pero en Delphi Rapid XE y debuggeando paso a paso he encontrado el que parece ser mi problema.

Tengo una comunicación con un dispositivo de hardware y he usado siempre strings para enviar y leer de dicho positivo. La razon es porque la clase que lo controla usa strings; y de allí que yo también.

Ahora bien, yo creo buffers con strings, son pocos datos asi que me han funcionado siempre bien. En estos strings el 0 es un valor válido y no el fin del string; no obstante delphi nunca tuvo problemas con esto.

Si por ejemplo hago

Código:
str := chr(1) + chr(2) + chr(0) + chr(3) + chr(4);
Delphi me almacenara los 5 bytes y me dirá que el length(str) es de 5. Ahora bien los datos que van en el string pueden tomar un valor de 0 a 255; y es allí donde con el RapidXE noto un problema que me está volviendo loco.


Si hago

Código:
str := chr(127) ;
Lo hace bien

Pero si hago

Código:
str := chr(128);

Me asigna $0080 (128 en una variable de 16 bits).

Le he dado vueltas al problema y chr debiera devolver un valor de 8 bits no de 16 bits!! Este código en delphi7 lo hace perfecto.

Casteandolo como char, no ha solucionado el problema...

Lo único que me resta por probar es volver a trabajar con buffers de bytes y luego hacer la conversion (ya que como les mencionaba la clase que controla el dispositivo pide y responde con strings).

Lo que van entre parentesis son constantes, es decir que no son variables que se modifiquen en tiempo de ejecución. Casteandolas por ejeplo con byte(128) tampoco resuelve el problema..

¿Alguna idea?

Desde ya muchas gracias por anticipado.
Responder Con Cita
 



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
Migracion a excel oscarac Varios 1 07-07-2011 09:02:17
Migración DavidSG4 OOP 0 20-10-2008 16:04:23
migracion de datos kejos MS SQL Server 1 18-01-2006 04:18:36
Casteo en tiempo de ejecución moesis OOP 4 21-07-2005 15:21:56
Herencia y Casteo PeLuCa OOP 9 05-04-2005 01:29:15


La franja horaria es GMT +2. Ahora son las 10:15:33.


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