Formato de almacenamiento
Hay dos implementaciones de la interfaz. IDataStorage
disponible: ASCIIDataStorage
y BinaryDataStorage
.
En ambos formatos la primera variable que se almacena es la variable reservada. ___xCompressTags
de tipo BOOL
. Su valor determina si las rutas de instancia se almacenan comprimidas. Si se escribe un objeto de integridad, entonces se escribe como la última variable denominada ___Integrity
de tipo BOOL
con valor TRUE
. Todas las variables persistentes, excepto estas variables reservadas, se almacenan en orden y se clasifican según su ruta de instancia completa. No importa si las rutas de la instancia están comprimidas o no.
Sugerencia
Si el usuario modifica los datos, debe asegurarse de que se mantendrá el orden de clasificación correcto.
formato ASCII
ASCIIDataStorage
escribe cada ruta de instancia de las variables persistentes (posiblemente en formato comprimido), el tipo de datos y el valor como una cadena en el archivo. El nombre y la fecha están separados por un carácter de tabulación (se puede cambiar por parámetro codbySeparator
). Cuando se lea el archivo, se ejecutará una conversión. Por lo tanto, el archivo se puede modificar externamente. Las líneas deben estar separadas por "\r\n" (convención de Windows). Las líneas que comiencen con un punto y coma se ignorarán durante la lectura; esta línea no se agregará cuando se escriba el archivo.
Formato de un archivo ASCII:
{timestamp}\r\n {instance path}{bySeparator}{Typ}:{value}\r\n … {instance path}{bySeparator}{Typ}:{value}\r\n
La marca de tiempo determina la hora en que se activó el almacenamiento. Está escrito como literal DATE_AND_TIME (ejemplo:
)DT#2012-01-11-15:11:09

Tratamiento de REAL
y LREAL
variables:
Los valores de las variables se escriben como literales ST. REAL
y LREAL
Los valores se tratan de manera diferente, porque la implementación de la conversión a y desde fracciones decimales sin pérdida de precisión. Sin embargo, para evitar cualquier pérdida de precisión y mantener la legibilidad y la posibilidad de modificar el archivo ASCII, estos valores se almacenan en formato hexadecimal. La fracción decimal (inexacta) se agrega detrás del valor hexadecimal como comentario. Mientras se lee el archivo, se admiten el formato hexadecimal y el formato decimal ST. Esto permite al usuario modificar la fracción decimal.
El formato hexadecimal se define de la siguiente manera:
F16#{Mantissa}H{Exp} | F16#NaN | F16#+Inf | F16#-Inf {Mantissa} ::= {HexNumeral} {Exp} ::= {HexNumeral} {HexNumeral} ::= [+-]?[1-9A-F][0-9A-F]*
Si m
es el valor de la mantisa y e
el valor del exponente que el valor del número es m * 16^e
.
lr1 LREAL:F16#F0H-3 0.05859375
formato binario
BinaryDataStorage
guarda los datos en formato binario. La marca de tiempo sigue a eso (escriba DATE_AND_TIME
). Después de eso se enumeran las variables.
Archivos comprimidos
Los valores de las variables se almacenan con ruta y nombre (en la ruta no está ni la aplicación ni el nombre del dispositivo) en una ortografía compacta para ahorrar recursos y tiempo.
En cualquier caso (comprimidas o no), las rutas de instancia deben ordenarse según la ruta de instancia completa. Este orden de clasificación es alfabético, por lo que los índices de la matriz se ordenan numéricamente.
Objetos | Formato comprimido |
---|---|
|
|
|
|
|
|
|
|