RE:Leer archivos .DAT y .KEY
No existe ninguna herramienta para extraer los datos de estos ficheros creados en Quick Basic.
Hay dos opciones UNO el sistema que los crea DOS coger el Quick Basic e investigar la estructura de los datos del fichero .DAT (del .KEY ni caso no te interesa)
Cosas a terner en cuenta:
Al tener un fichero de indices se puede suponer que la longitud del registro del fichero DAT debe ser fija.
- Los campos de texto son eso, texto.
- Para las fechas no hay ningun tipo de formato predefinido
- Los campos numericos pueden ser de 6 tipos diferentes, la logitud puede se de 2, 4 y 8 byts
Ayuda del QBasic:
----------------------------------------
MKI$, MKL$, MKS$ y MKD$ convierten números en cadenas numéricas que pueden ser almacenadas en variables de cadena a través de la instrucción FIELD.
CVI, CVL, CVS y CVD convierten esas cadenas nuevamente en números.
MKI$(expresión-entero%)
MKL$(expresión-entero-largo&)
MKS$(expresión-precisión-sencilla!)
MKD$(expresión-precisión-doble#)
CVI(cadena-numérica-de-2-bytes)
CVL(cadena-numérica-de-4-bytes)
CVS(cadena-numérica-de-4-bytes)
CVD(cadena-numérica-de-8-bytes)
Función Devuelve Función Devuelve
MKI$ Cadena de 2 bytes CVI Entero
MKL$ Cadena de 4 bytes CVL Entero largo
MKS$ Cadena de 4 bytes CVS Número de precisión sencilla
MKD$ Cadena de 8 bytes CVD Número de precisión doble
----------------------------------------
MKSMBF$ y MKDMBF$ convierten números con el formato IEEE en cadenas numérica con el formato binario de Microsoft que pueden ser almacenadas en variables de cadena a través de la instrucción FIELD.
CVSMBF y CVDMBF convierten esas cadenas nuevamente a números con el
formato IEEE.
MKSMBF$(expresión-precisión-sencilla!)
MKDMBF$(expresión-precisión-doble#)
CVSMBF (cadena-numérica-de-4-bytes)
CVDMBF (cadena-numérica-de-8-bytes)
Función Devuelve
MKSMBF$ Una cadena de 4 bytes que contiene un número con el formato
binario de Microsoft
MKDMBF$ Una cadena de 8 bytes que contiene un número con el formato
binario de Microsoft
CVSMBF Un número de precisión sencilla con el formato IEEE
CVDMBF Un número de precisión doble con el formato IEEE
■ Estas funciones son útiles para mantener archivos de datos creados
con versiones antiguas de Basic.
Ejemplo:
TYPE Buffer
SngNum AS STRING * 4
DblNum AS STRING * 8
END TYPE
DIM RecBuffer AS Buffer
OPEN "TESTDAT.DAT" FOR RANDOM AS #1 LEN = 12
SNum = 98.9
DNum = 645.3235622#
RecBuffer.SngNum = MKSMBF$(SNum) RecBuffer.DblNum = KDMBF$(DNum)
PUT #1, 1, RecBuffer
GET #1, 1, RecBuffer
CLOSE #1
PRINT CVSMBF(RecBuffer.SngNum), CVDMBF(RecBuffer.DblNum)
----------------------------------------
Como puedes ver no es facil pero tampoco imposible, es cuestion de paciencia.
Saludos