FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Desempaquetar campos numéricos comprimidos de archivo
Hola a tod@s.
Necesito leer un fichero creado con btrieve para pasarlo a mi aplicación. Con la instrucción BUTIL saco los registros a un fichero de texto pero me encuentro con que los campos numéricos están empaquetados. Para los que conozcan el BASIC quiero recordar que se empaquetaban/desempaquetaban con la instrucción cvi/cvs mki/mks. ¿Hay alguna manera desde Delphi de poder leer y desempaquetar estos campos o me tendré que preparar un programita en BASIC (horror porque no me acuerdo de nada)? Dejo aquí un archivo de muestra por si a alguien le hace chiste y le echa un vistazo. Gracias y un saludo
__________________
Be water my friend. Última edición por newtron fecha: 18-01-2017 a las 19:32:30. |
#2
|
||||
|
||||
En torrys hay algunos componentes para acceder desde delphi a bases de datos btrieve/pervasive, a ver si te sirve.
También he encontrado esto, es libre. |
#3
|
||||
|
||||
Gracias, le echaré un vistazo y te cuento.
__________________
Be water my friend. |
#4
|
||||
|
||||
Parece que estos programas lo que hacen es algo similar al BUTIL que viene con las BTRIEVE que es generar un fichero de texto a partir del fichero original pero no me resuelve el problema de los números empaquetados.
Seguiremos buscando la forma.
__________________
Be water my friend. |
#5
|
||||
|
||||
"Números empaquetados", ¿te refieres a big endian y little endian?
Código:
unsigned long blockLength = *blockLengthPtr++ << 24; blockLength |= *blockLengthPtr++ << 16; blockLength |= *blockLengthPtr++ << 8; blockLength |= *blockLengthPtr; unsigned long dataLength = *dataLengthPtr++ << 24; dataLength |= *dataLengthPtr++ << 16; dataLength |= *dataLengthPtr++ << 8; dataLength |= *dataLengthPtr;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código Únete al grupo Teaming clubdelphi | Colabora mediante Paypal Última edición por Casimiro Notevi fecha: 25-05-2012 a las 12:04:52. |
#6
|
||||
|
||||
Mira esta página, creo que ahí tienes la solución Y aquí un ejemplo sencillo, que en teoría funciona;
|
#7
|
|||
|
|||
Hola newtron
Hasta donde recuerdo (usé btrieve y butil en los 90's) y el butil te generaba un archivo csv de la info, voy a escarbar en mis respaldos a ver si conservo aún la linea de comandos que usaba para eso, aunque era para DOS, no se si cambiaron algo en esos programas. Saludos |
#8
|
||||
|
||||
Veamos, creo que esto:
Mira los ejemplos de shr y shl en http://www.delphibasics.co.uk |
#9
|
||||
|
||||
Gracias egostar, el archivo ya lo tengo extraido con BUTIL. El problema que tengo es que dentro del registro hay campos numéricos empaquetados que no sé cómo extraerlos desde delphi. Esto en basic se hacían con unas instrucciones que no sé si tienen equivalencia en delphi.
En la imagen se ve un ejemplo del archivo en el que los muñecos de ciertos campos son los campos numéricos que os comento. Casimiro, no sé si esto que me indicas sirve para lo que estoy buscando, lo estudiaré un poco porque por encima no me entero de qué va. Gracias y un saludo.
__________________
Be water my friend. |
#10
|
|||
|
|||
Entiendo,
La otra opción es utilizar el manejador de bases de datos Btrieve, se llama Xtrieve, aunque lo que yo usé era para DOS, desconozco si tienes esa herramienta y desconozco si aún existe o se pueda descarga libremente. Por cierto, hasta donde recuerdo, los tipos decimales son BCD, y me parece que BUTIL exporta los valores numéricos (decimal, entero) como binarios. Saludos |
#11
|
||||
|
||||
Será mucho pedir preguntar si tienes el código fuente de esas funciones cvi/cvs mki/mks
Para saber qué hacen exactamente y así crear unas similares para delphi. O por lo menos, si supiésemos cómo empaqueta esos números. |
#12
|
||||
|
||||
Cita:
A ver si algún amable (y senior) forero que haya programado con versiones antiguas de basic le suena esto y me puede dar norte, si no, tendré que preparar un programita en basic que lea ese fichero, desempaquete los datos y me vaya generando otro con los números en modo carácter. Gracias y un saludo
__________________
Be water my friend. |
#13
|
||||
|
||||
¿Entonces son 4 dígitos y lo que hay almacenado es un número con decimales?.
|
#14
|
||||
|
||||
Ahimaspillao, recuerdo que se almacenaban dos tipos de números, uno en 4 dígitos y otro en 8, no recuerdo las características de cada uno.
__________________
Be water my friend. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Campos numericos | Alexandro | Tablas planas | 6 | 21-10-2008 17:21:09 |
Problemas al actualizar campos numéricos con ClientDataSet e IBX | PINO72 | Conexión con bases de datos | 0 | 17-03-2007 01:37:44 |
campos numericos en access | naker | Tablas planas | 1 | 08-10-2004 02:59:48 |
Máscaras para campos numéricos | jadelphi | Varios | 2 | 01-09-2004 08:53:06 |
Campos Numericos en DBEDITS | jfloro | OOP | 2 | 04-06-2003 11:40:22 |
|