我是新来的,对不起,如果我做错了什么!
我在Lazarus做了一个简单的Pascal程序,编译时遇到这个错误:
HWE(16,18)错误:类型“Char”和“Constant String”不支持“或”操作
以下是它抱怨的部分:
Repeat
begin
Readln(style);
If style <> ('e' or 'mp' or 'sa') then
Writeln ('do what I say!')
end
Until style = (e or mp or sa);
感谢您的帮助!
答案 0 :(得分:6)
or
必须与布尔表达式一起使用,例如
(style <> 'e') or (style <> 'mp') or (style <> 'sa')
答案 1 :(得分:4)
必须使用AND运算符:
If (style <> 'e') AND (style <> 'mp') AND (style <> 'sa') then
(在这种情况下不要使用OR运算符)
答案 2 :(得分:2)
使用关系运算符和布尔运算符组合两个布尔表达式时,请小心使用括号。
答案 3 :(得分:0)
pascal有一种很好的方法可以使用Sets来实现这一点,但仅限于序数类型(如CHAR,但不是字符串):
if not(style in ['e', 'm', 'p']) then
begin
DoSomething;
end
我经常遇到的一个非常常见的用例是检测是否正在编辑TDataSet:
if MyDataSet.State in [dsEdit, dsInsert] then
Begin
DoSomething;
End;