HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0114
ric-elementWindwos8でのRuntime Error発生について(ウィンドウ処理)9解決


ric-element

リンク

2013/1/14(Mon) 03:41:49|NO.51855

はじめまして、C++のRuntime Errorが出てしまう件で質問・報告させて頂きます。

Windwos8でHSPを使用しているのですが、ウィンドウ関係のある操作をすると、
「Microsoft Visual C++ Runtime Library」
というタイトルで、下記のようなエラーメッセージが出てきます。
Runtime Error! Program : 〜
This application has requested …

問題が発生するのは下記のソースコードです。
動作についてですが、Nextボタンで数字が増え、Resetで数字が1になり、
Windowボタンでサブウィンドウが表示されるというものです。
サブウィンドウを表示したままNextもしくはResetを押すと、
メインとサブウィンドウ両方の数字が変化します。
ここで、サブウィンドウをonexit処理で非表示にしてからNextもしくはResetを押すと、
上記のようなエラーが出ます。

使用しているOSは、Windwos8 Pro(64bit)、HSPのバージョンは、3.32β2です。
(それに加え、番号NO.51416でおにたま(管理人)さんがご提示くださった、
「終了処理の対応を行なったhsp3.exe(通常ランタイム)」もダウンロードして上書きしています。)
HSPのインストールディレクトリは、"C:\hsp332\"です。
作成したプログラムは、"C:\Users\[UserName]\HSP\"というフォルダを作成して、そこに保存しています。

他の質問で、HSPがまだWindows8に対応していない部分もあるというような書き込みもありましたので、
解決は難しいかもしれませんが、もし同じような症状が出て、
解決に至った方がいらっしゃいましたら、ご助言いただけると幸いです。

以下、ソースコードです。


screen 0,256,128,2 : screen 1,256,128,2 *Start point = 0 *NextP point += 1 : gsel 0,2 *Draw gsel 0,0 : redraw 0 : cls 0 : clrobj : mes point : redraw 1 pos 20,20 : button goto "Next", *NextP pos 20,40 : button goto "Reset", *Start pos 20,60 : button gosub "Window", *Window_Call *Window_Back gosub *Window_Draw onexit :gosub *exit stop *Window_Call gsel 1,2 : goto *Window_Back *Window_Draw gsel 1,0 : redraw 0 : cls 0 : mes point : redraw 1 onexit :gosub *exit return *exit if wparam=0 : end : else : gsel wparam,-1 : stop return



この記事に返信する


KA

リンク

2013/1/14(Mon) 04:26:10|NO.51856

エラーの通り、VC++のランタイムがインストールされていません。
HSPではなくてシステムのエラーです。

マイクロソフトから、VC2005・2008・2010・2012
の、各32ビット版・64ビット版ランタイムをインストールして下さい。



ric-element

リンク

2013/1/14(Mon) 05:17:27|NO.51859

>KAさん
ご返信ありがとうございました。
早速2005,2008,2010,2012のVisual C++再頒布可能パッケージを、
ダウンロード&インストールしましたが、やはり同様の結果となりました。
(2005,2008,2010は最初から入っており、2012だけ追加で入れてもNGだったので、
念のため全てダウンロード&インストールしましたが、症状は変わらずでした。)



KA

リンク

2013/1/14(Mon) 07:45:03|NO.51860

>>サブウィンドウをonexit処理で非表示にしてから

どうやって非表示にするのかわかりませんが、ぐちゃぐちゃ
触りまくりましたが再現はしませんでした。
(WIN8−32BIT)

WIN8のクリーンインストールでは、VCランタイムは入
っていないので、アップデートインストールかな?

あと32ビット版のランタイムも入れていますか。
HSPは32ビットプログラムなので、当然VCも32ビッ
ト版が必要です。



ric-element

リンク

2013/1/14(Mon) 08:14:44|NO.51861

>KAさん
コードの内容がわかりにくくて申し訳ありません。
上記のコードの「*exit」の部分で
if wparam=0 : end : else : gsel wparam,-1 : stop
とすることで、メイン以外のウィンドウの右上の×マークが押されると、
そのウィンドウを非表示にするようにしています。

一旦「Window」ボタンでサブウィンドウ表示

サブウィンドウの右上の×を押して閉じる(非表示)

「Reset」or「Next」ボタンを押す

ランタイムエラー

となってしまいます。

win8のPCを購入した際に各ランタイムが入っていたかは確認していませんが、
この質問をする直前に確認したところ、2005,2008,2010のvcランタイムは、
32bit(x86),64bit(x64)共に入っておりました。
最初から入っているものではないとのことですので、
恐らく自動アップデートの際にインストールされたのだと思います。
2012については、32bit,64bit共にインストールしました。

KAさんのPC(win8-32bit)で試しても問題が再現されないとのことなので、
もしかしたらwin8-64bit特有の問題かもしれません。



捨てID

リンク

2013/1/14(Mon) 12:50:50|NO.51867

俺の環境も「Windwos8 Pro(64bit)、HSPのバージョンは、3.32β2」ですけど、「Microsoft Visual C++ Runtime Library Runtime Error!」が出ました。

というか、まず、そもそも、
onexit gosub *exit
してるのに*exitラベルの後でstopしてるのが、HSPとしての不具合の原因だと思います。
なので、stopをコメントアウトしてreturnを有効にすると、不具合が出ませんでした。 逆に、*exitラベルの後でstopを用いるなら、
onexit goto *exit
にすると、不具合が出ませんでした。
結局、この質問や報告は、win8-64bitでHSP3.32β2環境でも、それ以外の環境での動作と同じになるようにしておいた方が良いでしょう、ということなのでしょうね。

後、
onexit gosub *exit
でなくて、
onexit : gosub *exit
でも良いんですね。HSP。w
また、念のために言っておきたいと思いますけど、gsel 1でstopしても、gsel 0の処理まで止まると思いますよ。



check

リンク

2013/1/14(Mon) 14:03:30|NO.51870

Windows7ではエラーが出なかったので、Windows8固有のバグだろうな。

>VC++のランタイムがインストールされていません。
CRTがインストールされていなければHSP自体が動かないのでは。



fortunehill

リンク

2013/1/14(Mon) 14:54:19|NO.51873

/*>捨てIDさん 此れでも動きます。*/

button goto "exit",*exit onexit gosub *exit stop *exit dialog end



捨てID

リンク

2013/1/14(Mon) 16:07:02|NO.51874

> /*>捨てIDさん 此れでも動きます。*/

確かにこちらでも不具合が発生しないでちゃんと動きました。
結局、原因は何なんでしょうね。



ric-element

リンク

2013/1/14(Mon) 17:43:46|NO.51878

>捨てIDさん
ご指摘の部分を修正しましたらランタイムエラーは出なくなりました。
gotoとgosubの使い方が良くなかったのですね。
まだまだプログラミング初級者なので、大変勉強になりました。
ご指摘ありがとうございました。
>gsel 1でstopしても、gsel 0の処理まで止まると思いますよ。
onexitは1箇所で大丈夫ということですか?
確かに試したところ、onexitはどちらかあれば問題なく動作しました。

>checkさん
私の方で確認したところ、同様のプログラムはwin7(32/64bit両方)では動作していたので、
windows8固有のバグと思われます。
そういえば、HSPのランタイムエラーについて、過去の掲示板の記事とかを見ると、
onexit関係でランタイムエラーが出やすいとの書き込みがありました。
onexitとかは、HSPの仕様か何かの関係で、
OSのバージョン変更時にエラーが出やすい部分なのかもしれませんね。

>fortunehillさん
こういう記述の仕方もあるのですね。勉強になります。



ONION software Copyright 1997-2023(c) All rights reserved.