Question

J'ai été dirigé vers ce site Web par un ami.

J'essaye d'utiliser and À Delphi, mais je semble faire quelque chose de mal. Y a-t-il quelque chose que vous devez utiliser?

J'ai le code suivant:

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;

J'obtiens une erreur au second = signe

Était-ce utile?

La solution

Vous devez mettre certaines parenthèses pour modifier la priorité de l'opérateur:

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

Opérateur and précède = La construction sans parenthèses est donc comprise commea=(abc and b=def) qui produit l'erreur de syntaxe.

Autres conseils

and a une priorité plus élevée que =. Alors if a=abc and b=def then devient if a=(abc and b)=def then, ce qui n'est pas valide. Alors écrivez-le comme if (a=abc) and (b=def) then.

La Avantage de l'opérateur Les règles pour Delphi vous déclenchent. Il y a quatre niveaux.

  1. @, NE PAS
  2. *, /, div, mod, et, shl, shr, comme
  3. +, - ou, xor
  4. =, <>, <,>, <=,> =, in, est

Dans votre exemple, la comparaison se déroulera en premier à moins que vous n'utilisiez des supports pour forcer les comparaisons d'égalité à faire en premier.

Expressions (Delphi) - Précédence de l'opérateur

Il y a sûrement des apostrophes manquants dans les chaînes - la déclaration devrait être

if (a = 'abc') et (b = 'def') alors ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top