- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数组,最多包含 20 个字符的字符串:
subtype c_string is string(1..20);
type string_array is array (natural range 1..100) of c_string;
当我尝试将字符串分配给 string_array 的某个位置时,如果该字符串的长度不正好是 20 个字符,则会出现以下错误:
raised CONSTRAINT_ERROR : (...) length check failed
这是导致问题的代码行:
str_a: string_array;
(....)
str_a(n) := "stringToAssign" --Causes error
避免这种情况的最佳方法是什么?
最佳答案
您的c_string
不能最多 20 个字符;它包含 正好 20 个字符,因此是 CE。
你可以使用 Ada.Strings.Bounded
如果有一个上限很重要,或者Ada.Strings.Unbounded
如果你真的不在乎。
在有界的情况下,会是这样的
package B_Strings is new Ada.Strings.Bounded.Generic_Bounded_Length (Max => 20);
type String_Array is array (1 .. 200) of B_Strings.Bounded_String;
然后
Str_A : String_Array;
Str_A (N) := B_Strings.To_Bounded_String (“stringToAssign”);
Ada Wikibook 中还有更多内容.
关于字符串 CONSTRAINT_ERROR 长度检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178369/
我有一个数组,最多包含 20 个字符的字符串: subtype c_string is string(1..20); type string_array is array (natural range
我们最近更新了 GCC 版本(4.8.2 到 5.3.0)并开始在一些 Ada 应用程序中收到意外的约束错误。我已将其简化为以下内容: -- moo.adb with text_io; procedu
我一直在看这个Ada 95 tutorial .我读到可以定义一个范围不同于标准范围的类型,如果程序试图超出这个范围,它会抛出一个错误。在我自己的程序中工作时,我注意到如果定义中的范围的末尾落在其基础
我遇到了一个问题,即在 Ada 中使用不能被系统的 Storage_Unit 整除的模块化类型。 (在运行时的 system.ads 中定义)将引发 Constraint_Error在运行时访问时。我
我是一名优秀的程序员,十分优秀!