掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Mid関数のエラー”プロシージャの呼び出し、または引数が不正です” (ID:81107)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Mid関数の引数にはちゃんと0以上が入っていると思います。 言葉尻をとらえるようで気が引けますが、『思う』だけではなく、 それぞれの変数の値を、きちんと『確認』してみてください。 まず、 Dim ZZ As String ZZ = Mid("abc", 0, 1) ですとか、あるいは、 ZZ = Mid("abc", 2, -1) を実行すると、今回の質問にあるエラー内容 『プロシージャの呼び出し、または引数が不正です。』 が発生する事はわかりますよね。 ですから、まずはエラーの原因が 「Midの第2引数に、0以下の値を渡していないか」 「Midの第3引数に、0未満の値を渡していないか」 などといった点から確認していきましょう。 WinSockから、実際にどのようなデータが返されているのかは知りませんが、 たとえば、変数 strData の内容が "H01kiboH" という文字列だった場合、 「j - (i + 7)」が 0 未満の値になりますので、今回のエラーに遭遇する事になりますよね。 (どんな文字列が渡されてもエラーにならないよう、処理を見直してみてください) それから…。 > Do Until a = Null 今回、a は Integer型ですから、a が Null になる事はありません。 (Integer型の変数には、Null値を格納できないのです) a が Variant型であれば Null が返される事もありえますが、その場合でも 「a = Null」のような『Null値との比較』は、絶対に True にはなりませんので、 この処理は、いわゆる「無限ループ」の状態になってしまいますよ。 > If b = Null Then Exit Do この行も先ほどと同様です。b が Integer である以上、Nullにはなりませんし、 「b = Null」という条件が True になる事はないため、変数 b の値が 何であったとしても、その後に続く「Exit Do」は処理されません。 # ソースを見る限り、他にも幾つか気になる点はありますが、とりあえずはここまで。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.