【问题标题】:Pascal: "or" not supported for types "Char"Pascal:“Char”类型不支持“或”
【发布时间】:2010-09-29 20:51:34
【问题描述】:

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

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

HWE(16,18) 错误:“Char”和“常量字符串”类型不支持“或”操作

这是它抱怨的部分:

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

感谢您的帮助!

【问题讨论】:

    标签: pascal


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      必须使用AND运算符:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          在 pascal 中有一个很好的方法可以使用 Set 来做到这一点,但仅适用于序数类型(如 CHAR,但不是字符串):

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-09-20
            • 1970-01-01
            • 1970-01-01
            • 2021-10-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多