vb6 ユーザー関数のnull値渡し

解決


バグジー  2005-11-17 23:55:51  No: 127865

よろしくお願いします
ユーザー関数を作成したいのですが、用意した変数に
確実に値が入るとは限りません。

function UserFunc(a as long,b as string) as long
の場合に、a,もしくはbがnullの可能性があります

実際の関数は、変数が10個以上あり
関数の呼び出し側でnullチェックの構文を作るのが手間なので
関数宣言で、nullを受け入れる形にして、
関数内で、nullチェックをしたいと考えてます。
 as variantで受けるとnullを許容できますが、
あまり使いたくありません。

なにかよい方法はありますか
----------------


なな  2005-11-18 01:09:12  No: 127866

関数の引数をオプショナルにしておくとか


LESIA  2005-11-18 01:33:37  No: 127867

>  as variantで受けるとnullを許容できますが、
> あまり使いたくありません。
とすると、nullチェックではなく、Optionalにして引数が渡されたかどうかを
チェックすることになります

Function UserFunc(Optional a As long = -9999, _
                  Optional b As string = "Null") As long

    If a = -9999 Then
        Msgbox "引数aはありません。"
    Else
        Msgbox "引数aは" & a & "です。"
    End If

    If b = "Null" Then
        Msgbox "引数bはありません。"
    Else
        Msgbox "引数bは" & b & "です。"
    End If
End Function


なな  2005-11-18 02:31:51  No: 127868

引数の判断は
イズミッシング関数をつかってもいいよね


バグジー  2005-11-18 02:49:05  No: 127869

皆様ありがとうございます。
なんか常識過ぎて、検索エンジンに引っかからないので
頼ってしまいました。
特にleisa様、ばっちりです。


K.J.K.  2005-11-18 02:54:15  No: 127870

nullとは、VariantのNull?、Empty?、それともNull文字列?、Null文字?
また、そのnullはどこから来るのでしょうか? DBから? 直接読み込んだ
ファイルから? その他から?

で、VariantのNullだとした場合、
A,その関数に渡す前にチェックし、関数用に正規化する。
B,関数で構わず受けてしまって、チェックする。(... As Variant)
のどちらかをなすべきですよね。

この場合、前者を手間といい、後者を好ましくない、と言っても、
どちらかにするしかないのでは。


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

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






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