La forma generale di istruzione condizionale è:
SE "espressione logica" ALLORA. .. ELSE ...
Il "Espressione logica" è qualsiasi espressione booleana. Un'espressione booleana è un'espressione che può essere valutata come VERO o FALSO.
un'espressione booleana può essere costruito utilizzando operatori di confronto e operatori booleani.
operatori di confronto:
= equals
<> not equals
> greater than
>= greater than or equals
< less than
<= less than or equals
Set Operatori di confronto:
= equals
<= returns true, if set1 is a subset of set2
>= returns true, if set1 is a superset of set2
in returns true, if an element is in the set
operatori booleani:
AND logical and
OR logical or
NOT logical not
XOR logical exclusive disjucntion
Esempi:
IF A = 10 THEN ...
IF A >= B THEN ...
IF C or D THEN ... (Note: C and D have to be logical, i.e. TRUE or FALSE)
IF NOT E THEN ... (Note: E has to be logical, i.e. TRUE or FALSE)
C, D ed E possono essere sostituire con qualsiasi espressione logica, ad esempio:
IF (edit1.text = '') OR (ISEMPTY(edit2.text)) THEN ...
IF NOT checkbox1.checked THEN ...
Si noti che l'espressione logica può essere costruito da espressioni logiche più semplici utilizzando operatori booleani, per gli esempi:
IF (A = 10) AND (A >= B) THEN ...
IF NOT ((A = 10) AND (A >= B)) THEN ...
Un errore comune nella scrittura dell'espressione logica non presta attenzione alla precedenza dell'operatore (che l'operatore ha valutato per primo). Gli operatori booleani hanno la precedenza maggiore di operatori di confronto, ad esempio:
IF A = 10 OR A >= B THEN ...
Quanto sopra è sbagliato, perché Delphi cerca di valutare
10 OR A
prima, invece di
A = 10
. Se A stesso non è un'espressione logica, allora si verifica un errore.
La soluzione è quello di utilizzare le staffe, in modo che il sopra IF ... THEN ... dovrebbe essere scritto come:
IF (A = 10) OR (A >= B) THEN ...
Per il controllo 3 controlli di modifica, l'istruzione condizionale diventa:
IF (Edit1.text <> '') AND (Edit2.text <> '') AND (Edit3.text <> '') THEN ...
Nota: leggermente fuori tema, ma correlato. I componenti gratuiti TJvValidators, TJvValidationSummary e TJvErrorIndicator da Jedi JVCL project forniscono un valido meccanismo di convalida.
Ogni linguaggio di programmazione che conosco, e questo è oltre 200, ha una qualche forma di logica booleana, che coinvolge le operazioni AND, OR e NOT. Se non li hai ancora visti, hai davvero bisogno di leggere un libro. Infatti se lo hai fatto in C# perchè non provarlo solo in delphi? L'unica differenza è che nella parentesi di Delphi non è sempre richiesta una dichiarazione IF. Ma quando si fanno confronti multipli di uguaglianza, si dovrebbe scrivere 'if (a = b) o (c = d)' per esempio. –
aggiuntivo. è necessario considerare anche che ci sono alcune condizioni che devono essere raggruppate in una parentesi come se ((a = x1) e (b = y1)) o ((a = x2) e (a = y2)) quindi fare qualcosa. – XBasic3000