Pascal:“或”不支持类型“Char”

时间:2010-09-29 20:51:34

标签: pascal

我是新来的,对不起,如果我做错了什么!

我在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); 

感谢您的帮助!

4 个答案:

答案 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;