Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ada 如何防止在使用.all on记录/指针时访问检查失败?_Ada - Fatal编程技术网

Ada 如何防止在使用.all on记录/指针时访问检查失败?

Ada 如何防止在使用.all on记录/指针时访问检查失败?,ada,Ada,这是设置我所有指针和记录的代码 节点类型; 类型BSTNodePtr是访问BSTNode; 类型节点是记录 密钥:密钥类型; 数据:项目类型; 左、右:BSTNodePtr; 结束记录; 类型BSTree是记录 根:BSTNodePtr; 结束记录; 我有一个功能是: 函数containskey:Key_类型;t:bTree返回布尔值为 temp_节点:BSTNodePtr:=t.root; 右:布尔; 左:布尔型; 临时树:b树; 开始 如果temp_node.all.key=key,则发生-

这是设置我所有指针和记录的代码

节点类型; 类型BSTNodePtr是访问BSTNode; 类型节点是记录 密钥:密钥类型; 数据:项目类型; 左、右:BSTNodePtr; 结束记录; 类型BSTree是记录 根:BSTNodePtr; 结束记录; 我有一个功能是:

函数containskey:Key_类型;t:bTree返回布尔值为 temp_节点:BSTNodePtr:=t.root; 右:布尔; 左:布尔型; 临时树:b树; 开始 如果temp_node.all.key=key,则发生-错误 返回true; elsif temp_node.all.left/=null和 temp_node.all.right/=null然后 temp_tree.root:=temp_node.all.left; 左:=containskey,临时树; temp_tree.root:=temp_node.all.right; 右:=containskey,临时树; 如果左=真或右=真,则 返回true; 其他的 返回false; 如果结束; 其他的 返回false; 如果结束; 端部包含;
每次我尝试执行.all时,都会出现一个约束错误,访问检查失败。我知道这是因为它不知道代码是否被分配,但我不知道我需要做什么才能访问它,或者让它在不给出错误的情况下执行它。如果有人能帮助我或者知道我做错了什么,我将不胜感激。谢谢大家!

我想我知道了。在使用.access之前,我需要先检查它以确保它不为空。所以,我只是在大部分代码之前添加了一个if语句。这是有道理的,idk为什么我花了这么长时间才想到哈哈

我想我知道了。在使用.access之前,我需要先检查它以确保它不为空。所以,我只是在大部分代码之前添加了一个if语句。这是有道理的,idk为什么我花了这么长时间才想到哈哈

很高兴听到你能找到解决方案!作为提示:您还可以拆分函数并将代码简化为:

函数包含键:键类型;N:BSTNode返回布尔值为 开始 返回N.Key=Key 或者N.Left/=null,然后包含键N.Left.all 或者N.Right/=null,然后包含键N.Right.all; 端部包含; 函数包含键:键类型;T:bTree返回布尔值为 开始 返回T.Root/=null,然后包含Key,T.Root.all; 端部包含;
在这里,and then的行为用于防止指针为空时取消对指针的引用。

很高兴听到您能够找到解决方案!作为提示:您还可以拆分函数并将代码简化为:

函数包含键:键类型;N:BSTNode返回布尔值为 开始 返回N.Key=Key 或者N.Left/=null,然后包含键N.Left.all 或者N.Right/=null,然后包含键N.Right.all; 端部包含; 函数包含键:键类型;T:bTree返回布尔值为 开始 返回T.Root/=null,然后包含Key,T.Root.all; 端部包含;
此处,and then的行为用于防止指针为空时取消对指针的引用。

是否有原因不能使用Ada.Containers.Multiway_树?是否有原因不能使用Ada.Containers.Multiway_树?