Arrays 使用长度和大小参数声明固定长度字符串数组
我希望能够为GTK组合框声明一个固定长度字符串的常量数组。在ADA中可以使用两个参数吗Arrays 使用长度和大小参数声明固定长度字符串数组,arrays,ada,Arrays,Ada,我希望能够为GTK组合框声明一个固定长度字符串的常量数组。在ADA中可以使用两个参数吗 此代码允许通过声明字符串来设置数组的大小。是否有可能以某种方式将规范中的常量替换为参数 简单数组不允许使用判别式。 鉴别记录不允许匿名数组 编辑: 我是否可以声明一个与表单等效的类型: 类型ArrayOfString(sringlength:正数; arraysize:的正(1..arraysize)数组 字符串(1..stringlength) 这种形式是不可能的,因为数组不能有判别式 或 子类型选择器字符
此代码允许通过声明字符串来设置数组的大小。是否有可能以某种方式将规范中的常量替换为参数 简单数组不允许使用判别式。 鉴别记录不允许匿名数组 编辑: 我是否可以声明一个与表单等效的类型: 类型ArrayOfString(sringlength:正数; arraysize:的正(1..arraysize)数组 字符串(1..stringlength) 这种形式是不可能的,因为数组不能有判别式 或 子类型选择器字符串是字符串 类型选择器STRINGARAY(数组大小:正;字符串长度:正)为记录 stringarray:选择器字符串(1..stringlength)的数组(1..arraysize); 结束记录 此表单不可能,因为记录不能有匿名数组 答复: 以下工作: 包选择器。字符串是 子类型ArrayIndex的正范围为1..64;--组合框中的最大条目数 子类型TextIndex为正范围1..32;--最大入口长度 类型选择器或字符串数组是数组(数组索引范围、文本索引范围) 个性 函数StringSelector(stringarray:SelectorStringArray)返回ArrayIndex sel:SelectorStringaray:=(“aa”、“bb”、“cc”、“dd”) 结束选择器。字符串 sel中的字符串长度必须相同 谢谢 老工程师
package Selectors.Strings is
SelectorStringLength : constant := 2;
subtype SelectorString is string( 1..SelectorStringLength );
type SelectorStringArray is array( positive range <> ) of SelectorString;
subtype SelectorStringIndex is positive;
function StringSelector( stringarray : SelectorStringArray ) return SelectorStringIndex;
selectarray : SelectorStringArray := ( "aa", "bb", "cc", "dd" );
end Selectors.Strings;
包选择器。字符串为
选择器字符串长度:常数:=2;
子类型SelectorString是字符串(1..SelectorStringLength);
类型选择器字符串数组是选择器字符串的数组(正范围);
亚型选择基因STRINGINDEX阳性;
函数StringSelector(stringarray:SelectorStringArray)返回SelectorStringIndex;
selectarray:SelectorStringArray:=(“aa”、“bb”、“cc”、“dd”);
结束选择器。字符串;
我不清楚您在寻找什么,但是上面的代码中没有任何匿名数组,您可以有一个判别记录类型,其组件是命名数组类型。所以我不确定你的陈述“鉴别记录不允许匿名数组”指的是什么
假设selectarray
最多可以包含100个字符串:
subtype Select_Array_Size is Integer range 0 .. 100;
type Selector_Strings (Size : Select_Array_Size := 0) is record
Data : SelectorStringArray (1 .. Size);
end record;
procedure Set_Select_Array (Data : SelectorStringArray);
selectarray : Selector_Strings; -- will be initialized with Size=>0,
-- Data=>an array of length 0
在身体里
procedure Set_Select_Array (Data : SelectorStringArray) is
begin
selectarray := (Size => Data'Length, Data => Data);
end Set_Select_Array;
然后使用selectarray.Data
而不是selectarray
来访问数据
您需要最大数组长度,因为某些编译器将为选择器\u字符串的数据组件分配尽可能多的空间
另一个选项是使selectarray
成为对数组类型的access
。“是否可以用参数替换规范中的常量”。。。什么的参数?你是说你想添加一个程序
,该程序接受SelectorStringaray
参数并设置selectarray
?P.S.Ada
是一种计算机语言,Ada
是一个牙医专业协会。