実行ファイルに、消したはずのコードが残ってしまう。


GW  2012-05-12 12:31:30  No: 103287  IP: 192.*.*.*

VB5,WinXP

実行ファイルに、消したはずのコードが残ってしまう。

まず、Form1のコードウインドウに次のようなコードを貼り付けます。
Private Sub Form_Load()
    a = "abc123"
End Sub

そして、実行ファイル「Project1.exe」を作ります。
そして、「Project1.exe」をメモ帳で開いて中身を覗いて見ます。
すると、「abc123」という文字列があるのがわかります。
ここまではまだわかるのですが、ここからとんでもないことが起こります。
続いて、先ほど貼り付けたコードを削除します。(つまり、まったく何もコードがない状態。)
そして、もう一度、実行ファイル「Project1.exe」を作ります。
そして、同じように「Project1.exe」をメモ帳で開いて中身を覗いて見ます。
すると、何と、削除したはずの「abc123」という文字列があるではありませんか!!
一体なぜなんでしょう。

これってどういうことなんでしょうか?
よろしくお願いいたします。

編集 削除
えと  2012-05-15 01:44:31  No: 103288  IP: 192.*.*.*

試せる環境が・・・
一度VB5を再起動、気になるならWin再起動して実行ファイルを作っても
同じ事になりますか?
何となくスタック領域のメモリを再利用したのでそうなっちゃった
感じがしますけど。VB5の不具合かもしれませんね。
ただサポートは無理かと。

編集 削除
GW  2012-05-15 21:57:45  No: 103289  IP: 192.*.*.*

ありがとうございます。

> 一度VB5を再起動、気になるならWin再起動して実行ファイルを作っても同じ事になりますか?

プロジェクトを保存して一旦閉じて再度開いてそれから実行ファイルを作ったときは「abc123」という文字列は見つかりませんでした。

しかし、このプロジェクトに再び次のコードを貼り付けて、
Private Sub Form_Load()
    a = "abc123"
End Sub
実行ファイルを作って、その後すぐに、貼り付けたコードを取り除いて実行ファイルを作ると「abc123」という文字列が見つかりました。
不思議ですね。何度やってもそうなります。VB6やドットネットではならないのでしょうか。
どうかよろしくお願いいたします。

編集 削除
GW  2012-05-16 09:52:55  No: 103290  IP: 192.*.*.*

新たな現象が見つかりました。

まず、これを貼り付けて実行ファイルを作る。
Private Sub Form_Load()
    a = "abc123"
End Sub

次に、"def456"に変えて実行ファイルを作る。
Private Sub Form_Load()
    a = "def456"
End Sub

次に、"ghi789"に変えて実行ファイルを作る。
Private Sub Form_Load()
    a = "ghi789"
End Sub

最後に、""に変えて実行ファイルを作る。
Private Sub Form_Load()
    a = ""
End Sub

そして、実行ファイルをメモ帳で開いて中身を覗いて見てる。
すると、驚くことに、"abc123"も"def456"も"ghi789"も全部見つかるではありませんか!!
これって、もしかして、アンドゥ用の編集の履歴が全部、実行ファイルに記録されてしまうってことでしょうか?
恐ろしいですね。
配布とかしたとき、ユーザーに編集の履歴が全部見られてしまう可能性があるということではないでしょうか。
これからは実行ファイルを作るときは必ず、一旦、プロジェクトを閉じてからにしないといけないようですね。

編集 削除
えと  2012-05-17 22:15:04  No: 103291  IP: 192.*.*.*

http://www.gizcollabo.jp/vbtomo/log/archive/hajikariqa_12632_0.html
この辺で解決できるのではないでしょうか。
中間コード?で作成しているのでは?

編集 削除
えと  2012-05-17 22:24:07  No: 103292  IP: 192.*.*.*

まちがい、P-Codeで作成しているのでは?
検証出来ませんけど。
以前に書いたソースが残っていたら気持ち悪いというか
まずいですね。

べた書きでパスワード書いていたらVB6だろうがそれ以降だろうが
バイナリエディタで見えてしまうのでやめた方が良いかと思います。

編集 削除
GW  2012-05-17 23:29:58  No: 103293  IP: 192.*.*.*

ご回答ありがとうございます。

> P-Codeで作成しているのでは?
いえ、今までP-Codeで作成したとこはなく、ずっとネイティブコードで作成してきました。
「プロジェクト」メニューの「Project1 のプロパティ」の「コンパイル」タブで、「ネイティブコードコンパイル」に設定されております。

> べた書きでパスワード書いていたらVB6だろうがそれ以降だろうがバイナリエディタで見えてしまうのでやめた方が良いかと思います。
まさに、IDとパスワードの自動入力プログラムを作っているときにこのよう現象に遭遇しました。
ひっとしてexeにパスワードがのってしまってはいやしないだろうかと思って、何気なくメモ帳で覗いたところ、パスワードが文字列があったのでびっくりしました。
そこで、パスワードを消してexeを作って、再度覗いてみたら、まだパスワードがあったのでさらに驚いたという次第でして。

編集 削除