web-dev-qa-db-ja.com

2つ以上の条件を1つのifステートメントに組み合わせる

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

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

7
user1469630

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

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

18
Hendra

もちろん。次のようなことができます。

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言語ガイド(ヘルプ、リファレンスの部分)または オンラインで見つけることができます

質問の場合:一般に、andor、およびnotを使用してさまざまな条件を組み合わせることができます。演算子の優先順位に関する問題を回避するには、上記のように、通常、各条件を括弧で囲む必要があります。

10
Rudy Velthuis

文の場合 の条件を組み合わせるには、AndおよびOr演算子を使用する必要があります

 if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') then
7
RRUZ

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

この例では

if False and SomeFunction() then

SomeFunctionは評価されません。あなたがそれらを好転させるならば

if SomeFunction() and False then

SomeFunction()が評価されます。

5
Pieter B

ただし、「そうでない場合」を使用する場合:

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

0
user763539