保存形式
インターフェースには 2 つの実装があります IDataStorage
利用可能: ASCIIDataStorage
そして BinaryDataStorage
。
どちらの形式でも、最初に保存される変数は予約変数です。 ___xCompressTags
タイプの BOOL
。その値によって、インスタンス パスが圧縮されて保存されるかどうかが決まります。整合性オブジェクトが書き込まれる場合、それは という名前の最後の変数として書き込まれます。 ___Integrity
タイプの BOOL
価値のあるもの TRUE
。これらの予約変数を除くすべての永続変数は、順番に保存され、完全なインスタンス パスによって並べ替えられます。インスタンスのパスが圧縮されているかどうかは関係ありません。
ヒント
データがユーザーによって変更された場合、ユーザーは正しい並べ替え順序が維持されることを確認する必要があります。
ASCII形式
ASCIIDataStorage
永続変数 (パックされている可能性がある) のインスタンス パス、型、および値を文字列としてファイルに書き込みます。名前と残りの日付はタブ文字で区切られます(パラメータを使用して変更可能) codbySeparator
)。読み出し時に変換が行われます。したがって、ファイルは外部から編集することもできます。行は「\r\n」で区切る必要があります (Windows の規則)。セミコロンで始まる行は、読み取り時に無視され、再保存時に再度挿入されません。
ASCII ファイルの形式:
{timestamp}\r\n {instance path}{bySeparator}{Typ}:{value}\r\n … {instance path}{bySeparator}{Typ}:{value}\r\n
タイムスタンプによって、ストレージがトリガーされた時間が決まります。 DATE_AND_TIME リテラルとして記述されます (例:
)DT#2012-01-11-15:11:09

の治療 REAL
そして LREAL
変数:
変数の値は ST リテラルとして記述されます。 REAL
そして LREAL
精度を損なうことなく小数への変換と小数からの変換が実装されるため、値は別の方法で処理されます。ただし、精度の低下を避け、可読性と ASCII ファイルの変更可能性を維持するために、これらの値は 16 進数形式で保存されます。 (不正確な) 小数部が 16 進値の後ろにコメントとして追加されます。ファイルの読み取り中は、ST 10 進形式だけでなく 16 進形式もサポートされます。これにより、ユーザーは小数を変更できるようになります。
16 進形式は次のように定義されます。
F16#{Mantissa}H{Exp} | F16#NaN | F16#+Inf | F16#-Inf {Mantissa} ::= {HexNumeral} {Exp} ::= {HexNumeral} {HexNumeral} ::= [+-]?[1-9A-F][0-9A-F]*
もし m
は仮数部の値であり、 e
数値の値よりも指数の値が m * 16^e
。
lr1 LREAL:F16#F0H-3 0.05859375
バイナリ形式
BinaryDataStorage
データをバイナリ形式で保存します。タイムスタンプはそれに続きます (タイプ DATE_AND_TIME
)。その後、変数がリストされます。
圧縮アーカイブ
変数値は、リソースと時間を節約するために、コンパクトなスペルのパスと名前 (パスにはアプリケーション名もデバイス名も含まれません) とともに保存されます。
いずれの場合も (圧縮されているかどうかに関係なく)、インスタンス パスは完全なインスタンス パスの順序で並べ替える必要があります。この並べ替え順序はアルファベット順であるため、配列インデックスは数値順に並べ替えられます。
オブジェクト | 圧縮フォーマット |
---|---|
|
|
|
|
|
|
|
|