gpt4 book ai didi

validation - 错误 : Operator is not overloaded

转载 作者:行者123 更新时间:2023-12-03 08:53:21 24 4
gpt4 key购买 nike

我使用 Free Pascal 创建了一个简单的代码块来验证输入的 ID 号,例如 Abc123。

当我尝试运行该程序时,我收到一条错误消息,提示“运算符(operator)未重载”,在它显示的位置,

 IF not (Ucase in Upper) or (Lcase in Lower) or (Num in Int) then

特别是“in”出现的地方。
有谁知道为什么会发生错误以及我能做些什么来解决它?

谢谢!
Program CheckChar;

VAR
UserID, LCase, UCase, Num : String;
readkey : char;
L : Integer;


CONST
Upper = ['A'..'Z'];
Lower = ['a'..'z'];
Int = ['0'..'9'];

Begin
Write('Enter UserID ');Readln(UserID);
Ucase := Copy(UserID,1,1);
LCase := Copy(UserID,2,1);
Num := Copy(UserID,3,2);
L := Length(UserID);

While L = 6 Do
Begin
IF not (Ucase in Upper) or (Lcase in Lower) or (Num in Int) then
Begin
Writeln('Invalid Input');
End;
Else
Writeln('Input is valid');

End;

readln(readkey);
End.

最佳答案

in用于测试集合中元素的存在。这里你设置的是一组char,所以要测试的元素也必须是char。在您的示例中,您测试的元素是一些导致错误消息的字符串( UCaseLCaseNum )。

您必须使用 Ucase 的切片和 LCase长度为 1 或者您也可以直接取单个字符 ( astring[index] ) 而不是使用 Copy 进行复制.

还有你的while循环完全没用。你只需要测试 6 个字符,所以让我们展开循环,而不是在你刚开始学习的时候添加一些复杂性。

最后,正确编写检查器的一种方法是:

Program CheckChar;
var
UserID : string;
readkey : char;
L : Integer;
invalid: boolean;

const
Upper = ['A'..'Z'];
Lower = ['a'..'z'];
Int = ['0'..'9'];

begin
Write('Enter UserID ');
Readln(UserID);
L := length(UserId);

if L <> 6 then invalid := true
else
begin
invalid := not (UserID[1] in Upper) or // take a single char, usable with in
not (UserID[2] in Lower) or // ditto
not (UserID[3] in Lower) or // ditto
not (UserID[4] in Int) or // ditto
not (UserID[5] in Int) or // ditto
not (UserID[6] in Int); // ditto
end;

if invalid then
Writeln('Invalid Input')
else
Writeln('Input is valid');

readln(readkey);
end.

关于validation - 错误 : Operator is not overloaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34973502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com