7

1 つの if ステートメントで 2 つ以上の条件を組み合わせることができますか? C# では、IF ステートメントで 2 つ以上の条件を組み合わせることができることを知っています。Delphiでそれを行うことはできますか?

ユーザーがフォームの 3 つの Edit コントロールに値を入力したかどうかを確認する必要があります。助けてくれてありがとう

4

5 に答える 5

18

条件文の一般的な形式は次のとおりです。

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 は、優れた検証メカニズムを提供します。

于 2012-06-27T05:22:59.373 に答える
10

もちろん。あなたは次のようなことをすることができます:

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。演算子の優先順位に関する問題を回避するには、上記のように、通常、各条件を括弧で囲む必要があります。

于 2012-06-26T22:50:58.717 に答える
7

if文で条件を組み合わせるには、 Andand演算子を使用する必要がありますOr

 if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') then
于 2012-06-26T22:51:30.420 に答える
5

式は左から右に評価されることを覚えておくことは非常に重要です。

この例では

if False and SomeFunction() then

SomeFunction は評価されません。それらをひっくり返すと

if SomeFunction() and False then

SomeFunction() が評価されます。

于 2012-06-27T09:12:53.747 に答える
0

ただし、「if not」を使用する場合:

そうでない場合 ( (edit1.Text = '2') または (edit2.Text = '3') ) その後 ...

于 2016-11-21T09:31:37.437 に答える