お世話になります。
Delphi Belrinを使用しています。
if文の条件式が長文となったのですが画面上で醜いので改行して表示していのですがどのようにコーディングすればよいのでしょうか。
例えば以下の行を2分割で表示するにはどのようにすればよいですか。
if ((GetNetUser = 'ABCDEFGHIJK') or (GetNetUser = '123456789') or (GetNetUser = 'LMNOPQRSTUVWXYZ') then
begin
・・・・
・・・・
end;
お手数をおかけしますがよろしくお願いいたします。
3行だったら、
if ((GetNetUser = 'ABCDEFGHIJK') or
(GetNetUser = '123456789') or
(GetNetUser = 'LMNOPQRSTUVWXYZ')) then
とかで、よさそうですが、
> 2分割で
となると、
if ((GetNetUser = 'ABCDEFGHIJK') or (GetNetUser = '123456789') or
(GetNetUser = 'LMNOPQRSTUVWXYZ')) then
あたりで、いかがですか?
こういうのはどうでしょうか?
bo1: Boolean;
bo2: Boolean;
bo3: Boolean;
bo1 := (GetNetUser = 'ABCDEFGHIJK');
bo2 := (GetNetUser = '123456789');
bo3 := (GetNetUser = 'LMNOPQRSTUVWXYZ');
if bo1 or bo2 or bo3 then begin
・・・・
end;
> こういうのはどうでしょうか?
>
> bo1: Boolean;
> ...
> if bo1 or bo2 or bo3 then begin
> ...
個別に評価すると短絡評価にならなくて無駄なので、igyさんの方法か、あとは評価相手を
TStrings/TStringListに入れておいて
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.Add('ABCDEFGHIJK');
...
if SL.IndexOf(GetNetUser) >= 0 then
begin
...
end;
finally
SL.Free;
end;
end;
のようにするのはどうでしょう?(質問の『醜いので改行して表示』からはすっかり離れて
しまっていますが)
GetNetUser が、なんらかの関数であると想定してしまうので、できれば一回の
呼び出しで済ませたい(思い込みです)から、StringListのIndexOfのような
配列の関数を使う方法を。
MatchStr、MatchText、IndexStr、IndexText
Delphiで文字列の配列の中に、指定した文字列があるか調べる
http://www.gesource.jp/weblog/?p=5821
質問の回答は、今後、条件が増えそうな場面では、以下のように書くこともあります。
等幅で見るとわかりますが、括弧の位置合わせをして、thenの行を
次の行に移動しています。
if ((GetNetUser = 'ABCDEFGHIJK' ) or
(GetNetUser = '123456789' ) or
(GetNetUser = 'LMNOPQRSTUVWXYZ')
) then
または
if ( (GetNetUser = 'ABCDEFGHIJK' )
or (GetNetUser = '123456789' )
or (GetNetUser = 'LMNOPQRSTUVWXYZ')
) then
igyさん、deldel さん、通りすがりさん、おかぽんさん
アドバイスありがとうございます。
いつも初歩的な質問ばかりでお恥ずかしいのですが
皆さまには、いつもご丁寧なアドバイスを頂き感謝しております。
今後ともよろしくお願いいたします。
ちなみに今回はおかぽんさんのアドバイスでコーディングしました。
ツイート | ![]() |