监视窗口中不存在Ada83约束错误

时间:2015-06-25 21:42:55

标签: ada

我在运行此代码时查看了约束错误。在调试器中,它在第二行停止(Menu_Text ...)。我将代码的RHS上的代码放入监视窗口,我发现没有问题。它完全按照预期进行评估。

simard@fermat:neo4j-community-2.2.3 # bin/neo4j-shell 
Welcome to the Neo4j Shell! Enter 'help' for a list of commands
NOTE: Remote Neo4j graph database service 'shell' at port 1337

neo4j-sh (?)$ match (n:Test) return n;
+------------------------+
| n                      |
+------------------------+
| Node[0]{name:"Benoît"} |
+------------------------+
1 row
260 ms
neo4j-sh (?)$ exit

bsimard@fermat:neo4j-community-2.2.3 # env | grep UTF
LANG=fr_FR.UTF-8
MDM_LANG=fr_FR.UTF-8

bsimard@fermat:neo4j-community-2.2.3 # locale
LANG=fr_FR.UTF-8
LANGUAGE=fr:en_US:en
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=


neo4j-sh (?)$ create (n:Test {name:'ééé'});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 1
Properties set: 1
Labels added: 1
17 ms

neo4j-sh (?)$ match (n:Test) return n;
+------------------------+
| n                      |
+------------------------+
| Node[3420]{name:"ééé"} |
+------------------------+
1 row
19 ms

错误是在我1时。我已确认此代码在监视窗口中有效:

     for I in 1..This_Info_Ptr.Child_Menu_Length loop
        Menu_Text  := This_Info_Ptr.Child_Menu_Text_Ptr.all(I-1);
        Menu_State := This_Info_Ptr.Child_Menu_States_Ptr.all(I-1);
        ...

Child_Menu_Text_Ptr和Child_Menu_States_Ptr指向数组(字符串和枚举),

我应该如何调试这一般?我无法看到代码有什么问题。但是,我对Ada访问类型的熟悉程度有限。 ...... Ptr变量是访问类型。

我正在使用GNAT。

2 个答案:

答案 0 :(得分:3)

假设被索引的数组都具有相同的维度且具有相同的索引类型,则应使用'first& 'last'range属性。

长度值的手动编码控制可能存在错误。 使用内置功能更安全,更可靠。

答案 1 :(得分:2)

您没有显示足够的源文本来告诉我们确定发生了什么。 This_Info_Ptr.Child_Menu_Text_Ptr.all是函数还是数组?它的规格是什么?

如果它是一个数组,你应该记住,Ada允许数组被任何离散类型索引,而Ada中的数组总是知道它们自己的索引边界。