ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月29日(金) 01:06

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 12 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2006年10月08日(日) 10:55 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
たかせです。
v05cp3にて
INPUT命令(N88BASICモード)にてSTRING型のデータだと強制終了します。
#prompt
'ps
'#consoleにすると
'dos_console.sbp(72) - "_System_HeapStringFree" 無効な識別子です
'dos_console.sbp(73) - "_System_HeapStringAlloc" 無効な識別子です
'というエラーが出てコンパイルが中断します。
DIM BYTEDATA AS BYTE
DIM CHARDATA AS CHAR
DIM INTEDATA AS INTEGER
DIM LONGDATA AS LONG
DIM SIGLDATA AS SINGLE
DIM DOBLDATA AS DOUBLE
DIM STRGDATA AS String
INPUT "BYTE = ",BYTEDATA
PRINT "BYTE =";BYTEDATA
INPUT "CHRA = ",CHARDATA
PRINT "CHRA =";CHARDATA
INPUT "INTE = ",INTEDATA
PRINT "INTE =";INTEDATA
INPUT "LONG = ",LONGDATA
PRINT "LONG =";LONGDATA
INPUT "SIGL = ",SIGLDATA
PRINT "SIGL =";SIGLDATA
INPUT "DOBL = ",DOBLDATA
PRINT "DOBL =";DOBLDATA
'INPUT "STRG = ",STRGDATA
STRGDATA = ZeroString(20)
STRINPUT(STRGDATA)
PRINT "STRG =";STRGDATA
Input$(1)
SUB STRINPUT(O1 AS *BYTE)
DIM DUMMY AS BYTE
INPUT "STRG = ",DUMMY
'FillMemory(StrPtr(STRGDATA),20,32)
lstrcpy(O1,_PromptSys_InputStr)
END SUB
END
ご確認願います。
ちなみに
#consoleにすると
dos_console.sbp(72) - "_System_HeapStringFree" 無効な識別子です
dos_console.sbp(73) - "_System_HeapStringAlloc" 無効な識別子です
というエラーが出てコンパイルが中断します。


通報する
ページトップ
 記事の件名: 追記
投稿記事Posted: 2006年10月08日(日) 11:03 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
たかせです。
該当箇所コメントはずしてみてください。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年10月08日(日) 12:22 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
お住まい: 茨城県
Ver.5.0 での#N88BASIC,#prompt,#consoleの対応状況については、現在遅れている状態です。
いずれ対応するのだとは思いますが、安全に使用したいのなら、4.0以前のActiveBasicを使うことをお勧めします。

ところで、#N88BASICと#promptは指定するだけでアクセス違反になるのですが、うちの環境だけでしょうか?


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年10月08日(日) 13:37 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
> Ver.5.0 での#N88BASIC,#prompt,#consoleの対応状況については、現在遅れている状態です。
> いずれ対応するのだとは思いますが、安全に使用したいのなら、4.0以前のActiveBasicを使うことをお勧めします。
了解しました。ありがとううございます。

ところで、9月24に投稿された件も同様ですね。

>
> ところで、#N88BASICと#promptは指定するだけでアクセス違反になるのですが、うちの環境だけでしょうか?

すみません意味がいまいちよくわかりませんが、
自分のPCでのみしか確認していません。

PCはWIN-XP,1.5Ghz,256MBです。
見当違いならごめんなさい。


最後に編集したユーザー たかせ [ 2011年2月26日(土) 13:43 ], 累計 1 回

通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年10月08日(日) 15:31 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
お住まい: 茨城県
引用:
Ver.5.0 での#N88BASIC,#prompt,#consoleの対応状況については、現在遅れている状態です。
いずれ対応するのだとは思いますが、安全に使用したいのなら、4.0以前のActiveBasicを使うことをお勧めします。

ところで、#N88BASICと#promptは指定するだけでアクセス違反になるのですが、うちの環境だけでしょうか?
すみません。やっぱりこの投稿は訂正させていただきます。

もう一度CP3をダウンロードして、きちんと上書きできているか確認してみてください。
もし、それでもおかしい場合はよくわかりません。というのも、うちのXP Home x86 SP2で#N88BASICまたは#consoleを書いただけのプログラムを実行しますと、アクセス違反が起きてしまうのです。しかし、今日Vista RC2をインストールしましたので、それで実行してみると問題なく実行することができました。たかせさんが最初に提示されたコードも問題なく実行できています。

他にも同じ症状の人はいるでしょうか?また、何かわかる方がいたら教えていただきたいです。


通報する
ページトップ
 記事の件名: 状況判明しました。
投稿記事Posted: 2006年10月28日(土) 17:26 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
たかせです。
いろいろ、調べてみたらprompt.sbpのinputというsub内で、
reallocされていないことが判明しました。
その原因でmemcpy関数で強制終了されます。

なお、逃げ道は2~3とおりあります。
一例では、
inputの直前でzerostring関数で文字列エリアを確保する。
promptのinputにあるreallocをコメントアウトする。

これで正常に動作することが確認できました。

でもこれはあくまでも暫定手段です。


通報する
ページトップ
 記事の件名: OverTakerさんへ
投稿記事Posted: 2006年10月28日(土) 17:47 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
たかせです。
>うちのXP Home x86 SP2で#N88BASICまたは#consoleを書いただけのプログラムを実行しますと、アクセス違反が起きてしまうのです。

うちのpcはxpなので上記の現象は発生しませんでした。
ちなみにどこでアクセス違反が起きますか?

>しかし、今日Vista RC2をインストールしましたので、それで実行してみると問題なく実行することができました。たかせさんが最初に提示されたコードも問題なく実行できています。

これって不思議ですね。うん~


最後に編集したユーザー たかせ [ 2011年2月26日(土) 13:35 ], 累計 1 回

通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年10月28日(土) 18:51 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
お住まい: 茨城県
たかせさん、わざわざ返信ありがとうございます。
上記の#N88BASICと#promptのアクセス違反の件ですが、滅多に起こらないのか、私のXP環境でしか再現できたことはありません。また、Ver.4.0のActiveBasicで確認してみたところ、こちらもアクセス違反が起きてしまっています。
このことから、間違いなくWindowsがおかしいというわけなので、放置しています。ちなみに、_System_realloc()でアクセス違反になります。
引用:
いろいろ、調べてみたらprompt.sbpのinputというsub内で、
reallocされていないことが判明しました。
その原因でmemcpy関数で強制終了されます。
ところで、そちらのアクセス違反も気になるところではありますね。本来正しく動作するはずのものですので、realloc()されていないというのはよくわかりませんが、少なくとも、正常に動作するうちのVista環境では、そのような奇怪なことをしなくても、問題なく動作します。

他にも、このような不思議な現象に見舞われている人はいないでしょうか?



最後に、今更気がつきましたが、アクセス違反が起きていたのは、#N88BASICと#promptです。以前の投稿に誤りがありましたので一応書いておきます。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年10月28日(土) 22:41 
>OverTakerさん
わたしの環境では#console以外で、メインのウィンドウを閉じるとアクセス違反になります。
どうもウィンドウプロシージャがWM_DESTROYを受ける前後でアクセス違反が起きるようです。
以前にもここで報告しましたが、環境依存っぽいのであきらめています。


通報する
ページトップ
   
 記事の件名: 高信期さんへ
投稿記事Posted: 2006年10月29日(日) 12:42 
オフライン

登録日時: 2006年2月05日(日) 17:10
記事: 215
お住まい: 東京都
たかせです。
>OverTakerさん
わたしの環境では#console以外で、メインのウィンドウを閉じるとアクセス違反になり>ます。
>どうもウィンドウプロシージャがWM_DESTROYを受ける前後でアクセス違反が起きるようです。
>以前にもここで報告しましたが、環境依存っぽいのであきらめています。

僕のPCでも同じ現象がたまに起きます。
大半は、プログラムのミスが圧倒てきです。
たとえば、alloc/freeの指定方法が不正だったり。
string型データにおいて確保されたエリア以上の長さの文字列を設定する。

そこでもう少し詳細を教えてください。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年10月31日(火) 00:30 
OverTakerさんが書いているとおり、
コード:
#prompt
とするだけでウィンドウを閉じるとアクセス違反になります。
また、
コード:
#prompt
Dim A As String
Input A
とすると、入力終了後INPUT_FromPrompt関数で落ちます。

現在開発している環境(Windows Xp Home)ではOSのサービスをかなり切っているのですが、
サービスをデフォルトのままにしている別のユーザーに切り替えてデバッグすると何事も無く終了できるので、
そこら辺に問題があると思うのですが…。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2006年10月31日(火) 21:24 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
お住まい: 茨城県
今日、さらに詳しいことがわかりました。
デバッグ実行ではアクセス違反になるのですが、リリースコンパイルをすると正しく動作するのです。環境は、XP Home x86 SP2、AB3.13/AB4.24/AB5.0 CP3いずれも同様です。
AB5.0だけでしたら、デバッガのバグだと予想できるのですが、昔正常に動作していたAB3.13やAB4.24まで正常に動作しないようなので、やはりXPや環境に、何か問題がありそうです。
引用:
OverTakerさんが書いているとおり、
コード:
#prompt
とするだけでウィンドウを閉じるとアクセス違反になります。
ちなみに、うちはウィンドウを閉じる時ではなく、起動時にアクセス違反が起きます。


追記:
引用:
現在開発している環境(Windows Xp Home)ではOSのサービスをかなり切っているのですが、
サービスをデフォルトのままにしている別のユーザーに切り替えてデバッグすると何事も無く終了できるので、
そこら辺に問題があると思うのですが…。
セーフモードで起動して確認してみたところ、何も変わりませんでした。サービスはあまり関係ないようです。別のユーザーに切り替えても、特に変化はありませんでした。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 12 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[11人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean