6

我是被朋友引导到这个网站的。

我正在尝试and在 Delphi 中使用,但我似乎做错了什么。你有什么需要投入使用的吗?

我有以下代码:

procedure TForm1.Button1Click(Sender: TObject);
var
a,b:string;
begin
a:=edit1.Text;
b:=edit2.Text;

if a=abc and b=def then
showmessage(a+b);

end;

我在第二个 = 符号处收到错误

4

4 回答 4

34

您必须放置一些括号来更改运算符优先级:

  if (a=abc) and (b=def) then

运算符and在前面=,因此不带括号的构造被理解为 a=(abc and b=def)会产生语法错误。

于 2011-03-30T15:40:07.243 回答
11

and的优先级高于=。所以if a=abc and b=def then变成if a=(abc and b)=def then,这是无效的。所以像这样写if (a=abc) and (b=def) then

于 2011-03-30T15:47:56.120 回答
8

Delphi的运算符优先级规则让您感到困惑。有四个级别。

  1. @, 不是
  2. *, /, div, mod, and, shl, shr, as
  3. +、-、或、异或
  4. =, <>, <, >, <=, >=, in, 是

在您的示例中,将首先进行 AND 比较,除非您使用括号强制首先进行相等比较。

表达式 (Delphi) - 运算符优先级

于 2011-03-31T23:50:47.913 回答
2

字符串中肯定缺少撇号 - 语句应该是

如果 (a = 'abc') 和 (b = 'def') 那么...

于 2011-03-31T05:28:05.593 回答