Skip to main content

保存形式

インターフェースには 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)

7. ASCII ファイルの例
ac_pm_ascii_file.png


の治療 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

8. 格納された REAL 値の例

lr1 LREAL:F16#F0H-3 0.05859375



バイナリ形式

BinaryDataStorage データをバイナリ形式で保存します。タイムスタンプはそれに続きます (タイプ DATE_AND_TIME)。その後、変数がリストされます。

圧縮アーカイブ

変数値は、リソースと時間を節約するために、コンパクトなスペルのパスと名前 (パスにはアプリケーション名もデバイス名も含まれません) とともに保存されます。

いずれの場合も (圧縮されているかどうかに関係なく)、インスタンス パスは完全なインスタンス パスの順序で並べ替える必要があります。この並べ替え順序はアルファベット順であるため、配列インデックスは数値順に並べ替えられます。

9.

オブジェクト

圧縮フォーマット

Fb1.fb2.fb3.a

Fb1.fb2.fb3.a

Fb1.fb2.fb3.b

<b

Fb1.fb2.d

<<d

Fb4

FB4