【发布时间】:2012-02-23 03:35:43
【问题描述】:
我的逻辑有问题。我不知道如何将记录复制到 Delphi 中的另一条记录。
TypeA = record
value1 : word;
value2 : word;
value3 : word;
end;
TypeB = record
b1 : byte;
b2 : byte;
end;
我有两条记录 TypeA 和 TypeB。例如,我发现TypeA记录中的数据属于TypeB记录。 注意:TypeA 的数据长度更长。
问题:如何将TypeA内存复制到TypeB记录中?
CopyMemory(@TypeA, @TypeB, Length(TypeB))
当我尝试 CopyMemory 并收到错误 (不兼容的类型)。
PS:我不想像下面这样复制或分配它。
TypeB.b1 := TypeA.value1 && $FF;
TypeA 和 TypeB 只是示例记录。大多数情况下,记录 TypeA 和 TypeB 可能包含多个记录,并且它 将更难分配表单 TypeA 并分配给 TypeB 记录。
提前致谢
----加题:
有没有办法将 Delphi 记录复制到字节数组以及如何?如果有的话,
- TypeA 记录到字节数组
- B 型字节数组
这个逻辑行得通吗?
【问题讨论】:
-
你的问题毫无意义。您想将一条记录的一半复制到另一条记录中?您可能需要将多个半记录复制到多个其他记录中?你需要澄清你的问题,因为现在它似乎很奇怪(而且无法回答,因为不清楚你想做什么)。
-
感谢您的评论。我也不清楚自己如何获得逻辑。我得到的信息是 TypeA 记录数据属于 TypeB 记录数据。放错地方了我想恢复数据并保存在TypeB中。
-
尝试
Move()而不是CopyMemory()例如:Move(TypeA, TypeB, SizeOf(TypeB)); -
@Remy:为什么?
MoveMemory和CopyMemory都实现为Move(Source^, Destination^, Length); -
你有两个问题。您正在尝试获取类型的地址。您需要声明一些变量。而且你需要使用 sizeof 而不是 length。