gpt4 book ai didi

arrays - 访问(传统)记录的字段

转载 作者:行者123 更新时间:2023-12-03 19:38:26 26 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改进这个问题?通过 editing this post 添加详细信息并澄清问题.

5年前关闭。




Improve this question




我有一系列传统记录。

当我知道记录的开始地址、字段的偏移量和字段的类型时,如何访问第 N 条记录的字段?
例如。

 type 
Tstring = string[20];
TRecord = packed record
aInteger : integer;
aDouble : double;
aString : Tstring ;
bString : string;
end;

var
aArray : array[0..N] of Trecord;
p : pointer;

....
p := pointer(cardinal(aArray[5])+12); // 12 = offset of field "aString"
writeln(Tstring(p^);

等等...

这不像我预期的那样工作。请问我哪里错了?

最佳答案

doesn't work as I expected


我知道您发布的代码是在尝试使其正常工作的过程中被复制的,但下一次, 解决语法错误后发布代码。另外,请说明它是如何不起作用的,不要只要求我们为您调试。
足够的咆哮
我已经解决了一个类型错误,所以代码现在可以工作,但仍然很麻烦。
p := pointer(cardinal(@aArray[5])+12); // 12 = offset of field "aString"
writeln(Tstring(p^));
基本上,您忘记了 aArray 的地址在将其转换为启用算术的 Cardinal 之前类型。
这就是为什么类型转换被认为是不安全的。类型错误很好地隐藏在其他类型转换之后。

关于arrays - 访问(传统)记录的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37505653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com