2010-09-29 9 views
3

Je suis nouveau ici si désolé si je fais quelque chose de mal!Pascal: "ou" pas pris en charge pour les types "Char"

Je fais un programme simple Pascal Lazare et je reçois cette erreur lors de la compilation:

HWE (16,18) Erreur: Opération « ou » non pris en charge pour les types « Char » et « Constant string »

Voici la partie, il se plaint de:

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

Merci pour toute aide!

Répondre

6

or doit être utilisé avec des expressions booléennes, comme

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

Wow, merci! ça marche! –

0

Il y a une façon agréable dans pascals de le faire en utilisant des jeux, mais pour les types ordinaux seulement (comme CHAR, mais pas les chaînes):

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

un cas d'utilisation très courante je souvent rencontré est de détecter si un TDataSet est en cours d'édition:

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

Doit utiliser l'opérateur ET:

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

(Ne pas utiliser ou opérateur dans ce cas)

2

En combinant deux expressions booléennes utilisant des opérateurs relationnels et booléens, veillez à utiliser des parenthèses.