改行について

解決


ガオ〜  2017-08-30 20:57:21  No: 48758

お世話になります。
Delphi Belrinを使用しています。
if文の条件式が長文となったのですが画面上で醜いので改行して表示していのですがどのようにコーディングすればよいのでしょうか。
例えば以下の行を2分割で表示するにはどのようにすればよいですか。

if ((GetNetUser = 'ABCDEFGHIJK') or (GetNetUser = '123456789') or (GetNetUser = 'LMNOPQRSTUVWXYZ') then
begin
・・・・
・・・・
end;

お手数をおかけしますがよろしくお願いいたします。


igy  2017-08-30 22:49:22  No: 48759

3行だったら、

if ((GetNetUser = 'ABCDEFGHIJK') or 
    (GetNetUser = '123456789') or 
    (GetNetUser = 'LMNOPQRSTUVWXYZ')) then 

とかで、よさそうですが、

> 2分割で

となると、

if ((GetNetUser = 'ABCDEFGHIJK') or (GetNetUser = '123456789') or 
    (GetNetUser = 'LMNOPQRSTUVWXYZ')) then 

あたりで、いかがですか?


deldel  2017-09-01 01:52:59  No: 48760

こういうのはどうでしょうか?

bo1: Boolean;
bo2: Boolean;
bo3: Boolean;

bo1 := (GetNetUser = 'ABCDEFGHIJK');
bo2 := (GetNetUser = '123456789');
bo3 := (GetNetUser = 'LMNOPQRSTUVWXYZ');

if bo1 or bo2 or bo3 then begin
・・・・
end;


通りすがり  2017-09-01 03:56:06  No: 48761

> こういうのはどうでしょうか? 

> 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;

のようにするのはどうでしょう?(質問の『醜いので改行して表示』からはすっかり離れて
しまっていますが)


おかぽん  2017-09-01 18:05:06  No: 48762

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


ガオ〜  2017-09-01 19:35:40  No: 48763

igyさん、deldel さん、通りすがりさん、おかぽんさん
アドバイスありがとうございます。
いつも初歩的な質問ばかりでお恥ずかしいのですが
皆さまには、いつもご丁寧なアドバイスを頂き感謝しております。
今後ともよろしくお願いいたします。
ちなみに今回はおかぽんさんのアドバイスでコーディングしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加