ab.com コミュニティ

ActiveBasicを通したコミュニケーション
前回の訪問日時: 2019年3月20日(水) 22:26 現在時刻 - 2019年3月20日(水) 22:26

All times are UTC+09:00




 [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2005年6月21日(火) 08:19 
オフライン

登録日時: 2005年5月31日(火) 10:52
記事: 264
住所: 高知
一部のユーザーの間では以前から話題になっていたのですが、
*Function型の関数ポインタを実行しても返り値が取得できないというバグが
あります。確か、このバグを報告されていた方も居られたと思うのですが
山本(管理人)様の正式なコメントはまだ頂いてなかったと思います。

この件はどうなりましたでしょうか?


ページトップ
   
 
 記事の件名:
投稿記事Posted: 2005年6月21日(火) 09:51 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
*Functionの戻り値の挙動についてですが、こちらでもバグを確認できました。次回のバージョンアップで修正しますので、今しばらくお待ちください。

念のため、もしよろしければ、問題が起きるサンプルコードを提示していただけると助かります。


ページトップ
   
 
 記事の件名: 2005/6/21 11:16 加筆
投稿記事Posted: 2005年6月21日(火) 10:23 
オフライン

登録日時: 2005年5月31日(火) 10:52
記事: 264
住所: 高知
> *Functionの戻り値の挙動についてですが、こちらでもバグを確認できました。次回のバージョンアップで修正しますので、今しばらくお待ちください。
>
> 念のため、もしよろしければ、問題が起きるサンプルコードを提示していただけると助かります。
コード:
#N88BASIC

' ↓ ここからプログラムが実行されます

Declare Function mmsystemGetVersion Lib "WINMM" () As DWord

Dim hDLL As HANDLE
Dim pFunc As *Function() As DWord

hDLL = LoadLibrary("winmm")
pFunc = GetProcAddress(hDLL,"mmsystemGetVersion")

Print mmsystemGetVersion()
Print pFunc()

FreeLibrary(hDLL)
こんな具合です。


P.S.
このバグは下記のようにするとうまく動きます。
コード:
#N88BASIC

' ↓ ここからプログラムが実行されます

Declare Function mmsystemGetVersion Lib "WINMM" () As DWord

TypeDef PFUNC = *Function() As DWord

Dim hDLL As HANDLE
Dim pFunc As PFUNC

hDLL = LoadLibrary("winmm")
pFunc = GetProcAddress(hDLL,"mmsystemGetVersion")

Print mmsystemGetVersion()
Print pFunc()

FreeLibrary(hDLL)

teflon様の情報によると
下記のようなプログラムがコンパイルできないようです。
※TypeDefを通すとうまく動く
コード:
Function Test(pp As *Function() As DWord)
    If pp=0 Then Exit Function
    Test = pp()
End Function

AB4.01
WindowsXP


ページトップ
   
 
 [ 3 件の記事 ] 

All times are UTC+09:00


オンラインデータ

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


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

ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke