Format de stockage
Il existe deux implémentations de l'interface IDataStorage
disponible: ASCIIDataStorage
et BinaryDataStorage
.
Dans les deux formats, la première variable stockée est la variable réservée ___xCompressTags
de type BOOL
. Sa valeur détermine si les chemins d'instance sont stockés compressés. Si un objet d'intégrité est écrit, il est alors écrit comme dernière variable nommée ___Integrity
de type BOOL
avec valeur TRUE
. Toutes les variables persistantes, à l'exception de ces variables réservées, sont stockées dans l'ordre et triées selon leur chemin d'instance complet. Peu importe que les chemins d'instance soient compressés ou non.
Astuce
Si les données sont modifiées par l'utilisateur, il doit s'assurer que le bon ordre de tri sera maintenu.
Format ASCII
ASCIIDataStorage
écrit chaque chemin d'instance des variables persistantes (éventuellement au format compressé), le type de données et la valeur sous forme de chaîne dans le fichier. Le nom et la date sont séparés par une tabulation (modifiable par paramètre codbySeparator
). Lorsque l'archive est lue, une conversion sera exécutée. Par conséquent, le fichier peut être modifié en externe. Les lignes doivent être séparées par "\r\n" (convention Windows). Les lignes commençant par un point-virgule seront ignorées lors de la lecture - cette ligne ne sera pas ajoutée lors de l'écriture de l'archive.
Format d'un fichier ASCII :
{timestamp}\r\n {instance path}{bySeparator}{Typ}:{value}\r\n … {instance path}{bySeparator}{Typ}:{value}\r\n
L'horodatage détermine l'heure à laquelle le stockage a été déclenché. Il est écrit sous la forme littérale DATE_AND_TIME (exemple :
)DT#2012-01-11-15:11:09

Traitement de REAL
et LREAL
variables :
Les valeurs des variables sont écrites sous forme de littéraux ST. REAL
et LREAL
les valeurs sont traitées différemment, car la mise en œuvre de la conversion vers et depuis des fractions décimales sans perte de précision. Cependant pour éviter toute perte de précision et conserver la lisibilité et la possibilité de modifier le fichier ASCII, ces valeurs sont stockées au format hexadécimal. La fraction décimale (inexacte) est ajoutée derrière la valeur hexadécimale en guise de commentaire. Lors de la lecture du fichier, le format hexadécimal ainsi que le format décimal ST sont pris en charge. Cela permet à l'utilisateur de modifier la fraction décimale.
Le format hexadécimal est défini comme suit :
F16#{Mantissa}H{Exp} | F16#NaN | F16#+Inf | F16#-Inf {Mantissa} ::= {HexNumeral} {Exp} ::= {HexNumeral} {HexNumeral} ::= [+-]?[1-9A-F][0-9A-F]*
Si m
est la valeur de la mantisse et e
la valeur de l'exposant est supérieure à la valeur du nombre m * 16^e
.
lr1 LREAL:F16#F0H-3 0.05859375
Format binaire
BinaryDataStorage
enregistre les données au format binaire. L'horodatage suit cela (tapez DATE_AND_TIME
). Après cela, les variables sont répertoriées.
Archives compressées
Les valeurs des variables sont stockées avec le chemin et le nom (dans le chemin il n'y a ni l'application ni le nom de l'appareil) dans une orthographe compacte pour économiser des ressources et du temps.
Dans tous les cas (compressés ou non), les chemins d'instance doivent être triés dans l'ordre du chemin d'instance complet. Cet ordre de tri est alphabétique, les indices de tableau étant triés numériquement.
Objets | Format compressé |
---|---|
|
|
|
|
|
|
|
|