我在运行此代码时查看了约束错误。在调试器中,它在第二行停止(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。
答案 0 :(得分:3)
假设被索引的数组都具有相同的维度且具有相同的索引类型,则应使用'first
& 'last
或'range
属性。
长度值的手动编码控制可能存在错误。 使用内置功能更安全,更可靠。
答案 1 :(得分:2)
您没有显示足够的源文本来告诉我们确定发生了什么。 This_Info_Ptr.Child_Menu_Text_Ptr.all
是函数还是数组?它的规格是什么?
如果它是一个数组,你应该记住,Ada允许数组被任何离散类型索引,而Ada中的数组总是知道它们自己的索引边界。