我正在做一些文件格式转换,并查看一些我能够着手解码原始格式的 Delphi 代码。
这是一个二进制文件,我有如何从这个文件中写入和读取信息的功能,所以大部分事情都很清楚。然而,我被一些事情难住了。
在文件中有一行,我们将一堆位读入 Array[i]:
S.ReadBuffer(Array[i], sizeOf(Array[i]));
现在,我看到了这个线程,但我不确定这同样适用于通过 Delphi 编写的格式(尽管我会假设如此?)。我怎么知道 Array[i] 的实际大小?只需计算数组中的变量,我就得到 168 位,但是如何正确填充它们呢?有没有办法从流声明中获取这些信息?
而且我想关于整个格式的另一个问题是 - 结构的部分(对应于 Array[i] 的结构)是否按照声明的顺序写入?如果它是结构中的结构怎么办?
如果重要的话,我正在使用 Matlab 脚本(现在)对其进行解码。
编辑:这是结构声明:
UsegDef = Record
tinc: extended;
cinc: extended;
tA: LongInt;
tB: LongInt;
tC: LongInt;
Arr: Array of seg;
end;
seg = Record
val: smallint;
time: longword;
typ: byte;
end;