1 つの if ステートメントで 2 つ以上の条件を組み合わせることができますか? C# では、IF ステートメントで 2 つ以上の条件を組み合わせることができることを知っています。Delphiでそれを行うことはできますか?
ユーザーがフォームの 3 つの Edit コントロールに値を入力したかどうかを確認する必要があります。助けてくれてありがとう
条件文の一般的な形式は次のとおりです。
IF "論理式" THEN ... ELSE ...
「論理式」はブール式です。ブール式は、TRUE または FALSE として評価できる式です。
ブール式は、比較演算子とブール演算子を使用して作成できます。
比較演算子:
= equals
<> not equals
> greater than
>= greater than or equals
< less than
<= less than or equals
比較演算子を設定します。
= 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
ブール演算子:
AND logical and
OR logical or
NOT logical not
XOR logical exclusive disjucntion
例:
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、および E は、次のような任意の論理式に置き換えることができます。
IF (edit1.text = '') OR ( ISEMPTY( edit2.text ) ) THEN ...
IF NOT checkbox1.checked THEN ...
論理式は、ブール演算子を使用して、より単純な論理式から構築できることに注意してください。次に例を示します。
IF ( A = 10 ) AND ( A >= B ) THEN ...
IF NOT ( ( A = 10 ) AND ( A >= B ) ) THEN ...
論理式を書く際のよくある間違いは、演算子の優先順位 (どの演算子が最初に評価されるか) に注意を払っていないことです。ブール演算子は、比較演算子よりも優先されます。次に例を示します。
IF A = 10 OR A >= B THEN ...
Delphi が評価しようとするため、上記は間違っています。
10 OR A
まず、代わりに
A = 10
. A 自体が論理式でない場合、エラーが発生します。
解決策は括弧を使用することです。したがって、上記の IF...THEN... は次のように記述します。
IF (A = 10) OR (A >= B) THEN ...
3 つの編集コントロールをチェックする場合、条件ステートメントは次のようになります。
IF ( Edit1.text <> '' ) AND ( Edit2.text <> '' ) AND ( Edit3.text <> '' ) THEN ...
注: 少しトピックから外れていますが、関連しています。Jedi JVCL プロジェクトの無料コンポーネント TJvValidators、TJvValidationSummary、および TJvErrorIndicator は、優れた検証メカニズムを提供します。
もちろん。あなたは次のようなことをすることができます:
if (A > 7) and (B < 13) or (C in [2, 4, 7]) then
または、編集コントロールの場合:
if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
または、それが必要な場合:
if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') then
などなど。
Delphiに関する本を実際に読むことは有益かもしれません。たとえば、Delphiの各バージョンに付属している(ヘルプの参考資料の部分にある)Delphi言語ガイドやオンラインで見つけることができます。
and
質問の場合:一般に、、、or
およびを使用してさまざまな条件を組み合わせることができますnot
。演算子の優先順位に関する問題を回避するには、上記のように、通常、各条件を括弧で囲む必要があります。
if文で条件を組み合わせるには、 And
and演算子を使用する必要がありますOr
if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') then
式は左から右に評価されることを覚えておくことは非常に重要です。
この例では
if False and SomeFunction() then
SomeFunction は評価されません。それらをひっくり返すと
if SomeFunction() and False then
SomeFunction() が評価されます。
ただし、「if not」を使用する場合:
そうでない場合 ( (edit1.Text = '2') または (edit2.Text = '3') ) その後 ...