EXEとプロジェクトファイルの違いは?


デル  2002-09-25 20:22:26  No: 105050

プロジェクトファイルを実行するとエラーが発生するのに、
EXEを実行するとエラーが起こりません。
どなたか理由をご存知の方いらっしゃいませんか?
EXEの実行とプロジェクトファイルでの実行に違いなんてあるのでしょうか?
ちなみにエラー内容は、
ラベルをコントロール配列で設置しているのですが、
「コントロール配列の0が存在しません」というメッセージです。
条件としては、同じ画面を2回目以降に起動させた時です。
よろしくお願いいたします。


たかみちえ  URL  2002-09-25 23:18:41  No: 105051

EXEファイル作成(コンパイル)と、普通の実行は、やっていることがまるで違います。

  コンパイルを押すと、EXEファイル作成にたくさんのコンソールアプリケーションを実行して、オブジェクトファイルを作ったり、それを実行可能ファイルに変換したり、
いろいろやるんですけど、
  VBでの実行は、あくまでインタープリタ(各行の実効命令をソフトが解釈して、それを実行していく形式)です。
なので、あんまり見たことはないですけど、違いが出てくるでしょう。

  これは、エラーメッセージからして、コントロール配列の0にアクセスしようとしたからです。
コントロール配列は、1から始まってたりしていませんか?(原則0からだったと思います)
コントロール配列のIndexプロパティで確認できるので、
もしおかしくなっているものがあれば、修正してください。
同じコントロールをコピーペーストでふやしたり削除したりをしていると、
よくあるとおもいますから。

  でも、2回目以降というのが、気になりますねぇ。
  何とかして(怪しい部分をステップ実行するなりして)、エラーを見つけてみてください。
周囲の文から、なぜそうなっているのかわかれば、もうちょっと何か言えるかもしれません。


デル  2002-09-26 00:37:08  No: 105052

早速の回答ありがとうございます。
そうでしたか、全く違うものだったのですね。
勉強になりました。

ではEXEファイルではなぜエラーにならないのでしょう?
EXEファイルの方がコンパイルもしているので、EXEファイルのみ
エラーが出るのならわかるのですが。。。

今からその箇所を直そうとすると、あまりにも手間と時間がかかってしまうので
放っておこうか、と思うのですが、(EXEファイルで問題ないため)
何か支障がでてくるのでしょうか?

知識不足ですいません。
よろしくお願いします。


たかみちえ  URL  2002-09-26 02:29:05  No: 105053

うーん、上に書いたとおり、どういう風にしてエラーが起こったか分からないと、
どうとも言えませんね。

  EXEファイルはWindowsが管理・実行しています。
でも、実行しただけだと、VBの中のひとつのアプレットのような存在でしかありません。
  なので、Windowsのソフトでは動かせる動作なのに、
VBのインタープリタがサポートしていない動作があれば、そこでおかしくなります。


Say  2002-09-26 04:46:10  No: 105054

>あんまり見たことはないですけど、違いが出てくるでしょう。

最近某所であった話題ですが、
以下のコードを実行してみてください。
Exeでは予想通りの動作をしますが、
デザインモードではちょっとへんです。
(ループ内で Debug.Print i して、カウンタの変化を見てください。)

    Dim i As Currency
    For i = 214747 To 214748 
        DoEvents      
    Next
    MsgBox i


Say  2002-09-26 04:53:18  No: 105055

>EXEファイルの方がコンパイルもしているので、EXEファイルのみ
>エラーが出るのならわかるのですが。。。

たぶん、ネイティブコンパイルしていると思いますが、
一度Pコードコンパイルしてみてください。

デザインモード実行と同じ現象が発生するなら、
Pコード変換の問題の可能性が大きいでしょう。


デル  2002-09-27 19:13:33  No: 105056

回答ありがとうございました!

Pコードコンパイルで実行してみたのですが現象は起こりませんでした。
コントロール配列も0からでした・・・
vbpファイルで実行しても現象が起こらなくなりましたし。。。

謎は深まるばかりですが、問題が起こるまでこのまま放置しておこうと思います。

VBも奥が深いですね。

どうもありがとうございました。


ひろ  2002-10-15 01:08:06  No: 105057

ベースを変えるのは
Option Base 1です。これで配列が1からになります。
0からしたい場合は、1を0にしてください。
VBは1から使うのが基本になっているみたいです。C言語使いの私は0からに
しています。
デルさんの症状は、ほっておくのはまずそうです。
もしこれがソフトウェアの商品の話だったら、問題点を探して解決するべきだと
思います。問題がでてから解決するというのは、使っている人が自分であるなら
文句がいいたくなると思います。
ただし仕事でなくただの勉強なら、この話はあてはまりません。
でも、ほっておくとパソコンのファイルが壊れたりするかもしれませんよ。
もしメモリ爆撃をしているなら、OSの領域を壊して、悪くするとファイル管理
もぐちゃぐちゃになるかもしれません。


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

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






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