ab.com コミュニティ

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

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




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

登録日時: 2005年7月20日(水) 17:59
記事: 12
Ver4.21にて

↓をデバッグ実行(F2)しようとすると、コンパイラが不正な処理で落ちます。
ところが、デバッグコンパイル(F4)やリリースコンパイル(F7)では問題なくコンパイルが完了し、動作も問題ありませんでした。
コード:
#console

Class HideMenuItem
Private

	ItemStr As BytePtr
	pfDraw As *Sub()
	pfMain As *Sub()
	pfSet As *Sub()

Public

	Sub ~HideMenuItem()
		free(ItemStr)
	End Sub

	Sub Set(str As BytePtr, pfMain As VoidPtr, pfSet As VoidPtr, pfDraw As VoidPtr)
		ItemStr = malloc(lstrlen(str) + 1)
		lstrcpy(ItemStr, str)

		This.pfMain = pfMain
		This.pfSet = pfSet
		This.pfDraw = pfDraw
	End Sub

	Sub CallMain()
		pfMain()
	End Sub

	Sub CallSet()
		pfSet()
	End Sub

	Sub CallDraw()
		pfDraw()
	End Sub
End Class

Dim a As Long
Dim ovc As HideMenuItem
ovc.Set("ああああああああああああああ", AddressOf(Func),AddressOf(Func),AddressOf(Func))

ovc.CallMain()
ovc.CallSet()
ovc.CallDraw()

Input a

Sub Func()
	Print "Func関数が呼び出されました"
End Sub
また、

・関数ポインタ型メンバ変数の数を減らす
・"あああああ..."の文字列を変更する
・mallocの行末にコメントを何文字か書く
・AddressOf演算子のところを0に置き換える

などとするとデバッグ実行が通るようになったりします。


デバッグコンパイル・リリースコンパイルが通るのでおそらくABのバグであるとは思いますが、もしかしたら自分が何かやっちゃいけないことをしてしまっているのかもしれないので、何か変な点があれば指摘をお願いします。


通報する
ページトップ
 記事の件名: 追記
投稿記事Posted: 2006年2月24日(金) 14:18 
オフライン

登録日時: 2005年7月20日(水) 17:59
記事: 12
追加情報

PC起動

ABエディタでこのソースを貼り付ける

デバッグ実行

コンパイル&実行成功

1文字消してから消した文字を書き直す

デバッグ実行

不正な処理でコンパイラが落ちる

何でしょうこれ?


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年2月24日(金) 14:55 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
バグのご報告ありがとうございます。こちらでも現象が確認でき、原因を突き止めることもできました。

次回のバージョンアップで修正しますので、今しばらくお待ちください。


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

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


オンラインデータ

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


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

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