纪录中为什么不能使用动态数组?(100)

  • 主题发起人 主题发起人 435214
  • 开始时间 开始时间
4

435214

Unregistered / Unconfirmed
GUEST, unregistred user!
代码:type datatype=RECORD voltage,angle:array[1..9999] of real; dot:integer; end; var data:datatype; dzym:file of datatype;上面纪录datatype为什么用动态数组 voltage :array of real就不行啊??有解决办法吗??
 
自己顶下
 
不用记录行不 用class可以哦!
 
哈哈,我还是希望用纪录。不知道那位高人指点下。。。
 
当然不可以啦,对于文件,系统必须要知道该结构体占用多长空间,空间不固定的,系统没法进行读写,所以就编译不通过。
 
Znxia,对啊。有什么办法解决吗??
 
Supermay,请给一源码,谢谢了
 
没说不能用,只不过记录的数据并不是你想要的.因为你没理解记录.
 
哈哈,是的。我的文件以纪录的形势保存。给一解决方案,好不??
 
哈哈,是的。我的文件以纪录的形势保存。给一解决方案,好不?? ==>晕,存个FileStream不就OK?
 
给个代码啊,别光说啊。。。。
 
aKnightChen,你说的是可行的,可否给一代码啊???
 
type TEmptyRecord = record end; // 占位 THeadRcd = packed record RecordType: Byte; // 标识的记录类型 RecordLen: Word; // 紧跟着的记录大小(如Datatype在文件中占的大小为: SizeOf(TDatatype) + TDatatype.voltageLen + TDatatype.angleLen) end; // 保存到文件的 TDatatype = packed record dot: Integer; voltageLen: Integer; angleLen: Integer; end; // 你自己定义的读取结构 Datatype = packed record dot: Integer; voltageLen: Integer; angleLen: Integer; voltage: TEmptyRecord; angle: TEmptyRecord; end;每次写入一个结构之前先写入一个, 记录头 THeadRcd,即记录保存 THeadRcd,TDatatype 之后 if TDatatype.voltageLen > 0 then 接着保存 voltage;if TDatatype.angleLen> 0 then 接着保存 angle;读取时, 根据你自己的保存规则去读就行了.其实没什么,你自己定好保存和读取规则就行了, 至于读到那个结构去,随便你了~
 
记录是死的,人是活的。比如可以这么定义:type datatype=RECORD dot: Integer; voltage,angle: Pointer; end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部