ard*_*new 1 delphi null record
我已经定义了一个TCGTable具有以下结构的记录类型:
type
TCGTable = record
x : array [1 .. MAX_POINTS] of Single;
y : array [1 .. MAX_POINTS] of Single;
end;
Run Code Online (Sandbox Code Playgroud)
我已经声明了一个TCGTable变量CGTable.
如果该记录满足多个运行时条件,则为变量CGTable分配特定的常量TCGTable记录值.
如果没有常数TCGTable记录符合这些条件,则CGTable应该是未定义的.
是否有我可以指定的Delphi 2010内置值CGTable来表明它是未定义的?我一直在使用的值尝试nil和null,但是这两个似乎是只为指针或变异类型有效.源将不会编译分配给这些值CGTable.
我想检查变量CGTable以确定其有效性,而不是,例如,维护一些额外的布尔有效性标志.
我能确定的唯一解决方法是:
a)将类型更改CGTable为TCGTable指针(CGTable : ^TCGTable;),然后允许我CGTable与nil值进行比较.
b)定义一些常量TCGTable记录作为"无效"记录.然后我将CGTable与这个"无效"记录进行比较.
有关如何处理此问题的任何建议?谢谢
您有一个包含静态数组的记录.此特定记录的大小等于ElementCount*SizeOf(Element).
根据您的数组使用MAX_POINTS常量调整大小这一事实,您看起来在数组中有一个可变数量的点.我想我会倾向于切换到这样的动态数组:
type
TSinglePoint = record
x: Single;
y: Single;
end;
TSinglePointArray = array of TSinglePoint;
Run Code Online (Sandbox Code Playgroud)
现在,如果你有一个变量,a: TSinglePointArray那么一个值nil表示它是空的或者是零.您可以使用查询数组的长度Length(a).您可以使用调整数组大小SetLength(a, NewLength).
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |