プロシージャが大きすぎます

解決


もも  2011-09-20 22:12:33  No: 103045

VB6.0で作成されたツールがあり、これを
「完全コンパイル後に実行」をすると、

コンパイルエラー
プロシージャが大きすぎます

とエラーが出ます。
この状態のままexeを作成し、実行するとエラーは発生しません。
このコンパイルエラーは、ほっておくとどんな問題があるのでしょうか。
教えてください。


みけ  2011-09-21 02:43:37  No: 103046

多分1つのプロシージャに長いコードを書いて
しまっているからこのエラーが出てしまうのでは
ないのでしょうか。

OKWeb(goo版) - 「コンパイルエラー:プロシージャが大きすぎます。」を回避するには。
http://oshiete.goo.ne.jp/qa/5737856.html

このページに書いてある通りプロシージャのコード量を
減らしてサブルーチン(Sub XXXXX())や関数(Function XXXXX())に
出来るものがあったら分離して記述すれば良いと思います。


魔界の仮面弁士  2011-09-21 05:18:34  No: 103047

みけさんも書かれていますが、一つのプロシージャ(Sub/Function等)に
含められるコードは、64KB が上限とされています。

また、変数や定数、ユーザー定義型なども、同様に 64KB の上限が
存在します。詳細はヘルプの下記の項を参照してみてください。

Visual Basic ドキュメント
└Visual Basic の使用方法
  └プログラミング ガイド
    └Visual Basic の仕様、制限事項、およびファイル形式
      └プロジェクトの制限
        ├コントロールの制限
        ├データの制限
        └システム リソースの制限


もも  2011-09-22 18:07:23  No: 103048

みけさん、魔界の仮面弁士さん
回答ありがとうございます。

直し方はわかりました。
ただ、exeにすると正常に動作しているように見えるので
「プロシージャが大きすぎます」とエラーが発生していても
exeにすれば問題がないのか、問題があるとすればなんなのか
知りたいと思っています。

ご存知であれば、教えていただけないでしょうか。


魔界の仮面弁士  2011-09-22 21:28:49  No: 103049

ネイティブコンパイルしていた場合、内容が最適化されることで、
サイズ上限を下回ったということなのかもしれません。
コンパイルモードが P-Code に設定されていた場合は、もしかしたら
開発環境で実行した場合と同様にコンパイルエラーになるかも? (未確認)

いずれにせよサイズ上限に近いコードというのは、可読性の点からも
今後のメンテナンスの上で問題となりうるでしょうから、たとえ今は
たまたま動いていたとしても、リファクタリングを実施すべきかと思います。


もも  2011-09-28 19:46:00  No: 103050

魔界の仮面弁士さん
返信遅くなって申し訳ありません。
また、回答ありがとうございます。

>コンパイルモードが P-Code に設定されていた場合は、もしかしたら
>開発環境で実行した場合と同様にコンパイルエラーになるかも? (未確認)

確かに、P-Codeに設定し、exeを作成しようとすると
コンパイルエラーになりました。

納得しました。
ありがとうございます。


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

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






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