Ada实际值为;S";必须是一个变量

Ada实际值为;S";必须是一个变量,ada,Ada,这是我的一份身体档案。我得到了错误“words.adb:75:42:actual for“S”必须是一个变量” 我知道我的错误是从哪里来的。Remove_字符使用S:in-out Usting,而函数为_子集使用S:in-Usting。 我的问题是如何将变量从Remove_字符更改为仅一个in-Ustring? 抱歉,如果这有点混乱,我对编程和网站都是新手。你不能,至少不能直接 我不知道什么是UString,但我认为Delete过程会修改它。如果将Remove\u Character中的S声明更

这是我的一份身体档案。我得到了错误“words.adb:75:42:actual for“S”必须是一个变量”

我知道我的错误是从哪里来的。Remove_字符使用S:in-out Usting,而函数为_子集使用S:in-Usting。 我的问题是如何将变量从Remove_字符更改为仅一个in-Ustring?
抱歉,如果这有点混乱,我对编程和网站都是新手。

你不能,至少不能直接

我不知道什么是
UString
,但我认为
Delete
过程会修改它。如果将
Remove\u Character
中的
S
声明更改为Ustring中的
S:

我能想到的最简单的方法是在
Is\u Subset
中复制
S

Copy_Of_S: UString := S;
然后将(可修改的)副本传递到
删除\u字符

我所说的“最简单”,是指它对现有代码的更改最小。但是你应该考虑重新组织它。通过修改一个字符串来确定一个USTR是否是另一个USTR的子集似乎不是最好的方法;我相信有一种更有效的方法

一个无关紧要的小问题:这:

if Could_Remove = false then
最好写为:

if not Could_Remove then

关于如何解决编译问题,Keith是对的。但是,您应该仔细考虑您的循环
1..length(subset)
在循环开始时计算一次,但在循环过程中更改
length(subset)
。你可以用一个小盒子。
if not Could_Remove then