Pascal:"or" 不支持类型 "Char"。

3

我是新来的,如果我做错了什么,请原谅!

我在Lazarus中制作一个简单的Pascal程序,编译时出现以下错误:

HWE(16,18)错误:不支持“Char”和“Constant String”类型的“or”操作

这是它抱怨的部分:

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个回答

7

or必须与布尔表达式一起使用,例如:

(style <> 'e') or (style <> 'mp') or (style <> 'sa')

4

必须使用AND运算符:

If (style <> 'e') AND (style <> 'mp') AND (style <> 'sa') then

(在这种情况下不要使用OR运算符)


2

当使用关系运算符和布尔运算符组合两个布尔表达式时,请注意使用括号。


0

在Pascal中,有一种很好的方法可以使用集合来实现这一点,但仅适用于序数类型(如CHAR,但不包括字符串):

if not(style in ['e', 'm', 'p']) then
  begin
  DoSomething;
  end

我经常遇到的一个非常常见的用例是检测TDataSet是否正在被编辑:

if MyDataSet.State in [dsEdit, dsInsert] then
  Begin
  DoSomething;
  End;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接