Utilisation de l'opérateur ** et ** dans une instruction ** if **
-
14-11-2019 - |
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
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.
- @, NE PAS
- *, /, div, mod, et, shl, shr, comme
- +, - ou, xor
- =, <>, <,>, <=,> =, 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.
Il y a sûrement des apostrophes manquants dans les chaînes - la déclaration devrait être
if (a = 'abc') et (b = 'def') alors ...