我如何更改此代码以强制索引以第一个索引'首先评估为1和最后一个索引'开始?最后评估为'长度?
Menu_Text_Ptr := new Packed_Message_Array_Type'("A...",
"B...",
"C...",
"D...");
Run Code Online (Sandbox Code Playgroud)
我有几个像这样的动态数组,它们的长度各不相同.我宁愿不放置最后一个索引值的显式长度,因为这会使代码维护更复杂一些.我宁愿只是在分配语句中添加或减去内容,让编译器弄明白.
就目前而言,第一个索引'First评估为-2147483648(可能类似于0x80000000).
有可能做我要问的事吗?
这是GNAT上的Ada83.
如果您的第一个索引是-2147483648(-2 31),那么您可能已将数组类型定义Packed_Message_Array_Type为:
type Packed_Message_Array_Type is array(Integer range <>) of Some_Type;
Run Code Online (Sandbox Code Playgroud)
如果将索引类型更改Integer为Positive(这是Integer下限为1 的子类型),则默认下限为1.
通常,如果定义指定其初始值但未指定下限的数组变量,则下限将默认为索引类型的下限.
(我删除了部分答案;我认为你可以只为第一个元素定义索引,但位置关联不能遵循命名关联.)