ab.com コミュニティ https://www.activebasic.com/forum/ |
|
関数ポインタの返り値 https://www.activebasic.com/forum/viewtopic.php?t=127 |
ページ 1 / 1 |
作成者: | NoWest [ 2005年6月21日(火) 08:19 ] |
記事の件名: | 関数ポインタの返り値 |
一部のユーザーの間では以前から話題になっていたのですが、 *Function型の関数ポインタを実行しても返り値が取得できないというバグが あります。確か、このバグを報告されていた方も居られたと思うのですが 山本(管理人)様の正式なコメントはまだ頂いてなかったと思います。 この件はどうなりましたでしょうか? |
作成者: | 山本 [ 2005年6月21日(火) 09:51 ] |
記事の件名: | |
*Functionの戻り値の挙動についてですが、こちらでもバグを確認できました。次回のバージョンアップで修正しますので、今しばらくお待ちください。 念のため、もしよろしければ、問題が起きるサンプルコードを提示していただけると助かります。 |
作成者: | NoWest [ 2005年6月21日(火) 10:23 ] |
記事の件名: | 2005/6/21 11:16 加筆 |
> *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 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |