Ver Mensaje Individual
  #6  
Antiguo 20-09-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Nebli
El problema que tengo es que con la versión 30, que es con la que estaba trabajando hasta hace unos días !!!, hice un programa que me permitía guardar datos de diversos tipos, como String, Integer, etc, según una estructura previamente definida con Type.

Ese programa ha estado funcionando bien, pero cuando lo he querido mejorarlo al conseguir la versión 7 de Delphi, al compilar las mejorar hechas y ponerme a trabajar con la nueva versión del programa ya compilado, resulta que esta nueva versión del programa que ha creado Delphi 7, no lee bien los datos que el programa hecho con la versión de Delphi 30 había guardado.

[...]

tengo la sensación que no se respenta el tamaño de los diversos tipos de datos que hay en el Record, y lee más cantidad de la que debería de leer, por lo que el siguiente registro, ya no es leído bien y así sucisivamente.
Qué lio con esto de las versiones. Supongo que por 30 te refieres a 3.0. De cualquier forma les notifico que vamos en la versión 16 y no lo digo yo sino el mismo Borland: ejecuten el compilador en línea y lean qué número de versión es.

En cuanto al problema que nos ocupa, aunque no estoy seguro me da la impresión de que tiene que ver con los string. Hasta alguna versión, quizá justamente la 3, el tipo de datos string correspondía a lo que hoy conocemos como ShortString, es decir, una cadena de longitud fija de 255 bytes. Actualmente el tipo string corresponde a cadenas dinámicas, esto es, cadenas de caracteres con una longitud dinámica.

Si el problema va por ahí podrías cambiar los campos string de tus record por ShortString e incluso agregar condicionales del compilador para compilar correctamente en una u otra versión de Delphi.

EDITO:

El cambio a cadena dinámica afecta al tamaño de los record porque ahora un string es, en el fondo, un apuntador y por tanto ocupa sólo cuatro bytes.

// Saludos

Última edición por roman fecha: 20-09-2004 a las 21:26:55.
Responder Con Cita