これはおそらく64bit版固有の理由だと思うのですが、思い込みで判断するのもよくないだろうと思って質問させて頂くことにしました。
これはなぜエラーになってしまうのでしょうか?
どこを改善すれば64bit版でも動作するのでしょうか?
それともこれは実行ファイルの作成の仕方に何か問題があるのでしょうか?
補足:
・HSPスクリプトエディタを使ってShift-JISで64bit版実行ファイルを作成しても同じでした。
・VSCodeとhspcを使ってUTF-8で64bit版実行ファイルを作成しても同じでした。
・64bit版におけるvarptrの問題はinoviaさんのhspint64.asを使えば解消できるらしいですが、今回関係あるかは不明です。
hspint64 - github
https://github.com/inovia/HSPInt64
;#include "hsp3_64.as" ;ドラッグ&ドロップしたアドレスを表示するスクリプト ;外部DLL呼び出し #uselib "shell32.dll" #func DragAcceptFiles "DragAcceptFiles" int,int #func DragQueryFile "DragQueryFileA" int,int,int,int #func DragQueryPoint "DragQueryPoint" int,int #func DragFinish "DragFinish" int ;定数 #define WM_DROPFILES 0x0233 screen 0, 320,320 redraw 0 mes "ファイルをここへ\nドラッグ&ドロップしてください" redraw 1 DragAcceptFiles hwnd, 1 ; このウィンドウを対象とする oncmd gosub *OnDropFiles, WM_DROPFILES ; WM_DROPFILES メッセージハンドラを設定 stop *OnDropFiles oncmd 0 hdrop = wParam;★ 64bit版だともしかしてここが32bit版と異なる? ; ドロップされたファイルの数を取得する DragQueryFile hdrop, -1, 0, 0 ndrop = stat if ndrop==0{ ;★ 64bit版だとなぜかndropが0として返答される ;何もドロップされていない判定(エラー) dialog "何もドロップされていません",1,"エラー" DragFinish hdrop; ドロップファイル情報をクリア (これをしないとメモリリークになる) end } ;ドロップされたファイルのアドレスを取得 folder_name = "" DragQueryFile hdrop, 0, varptr(folder_name), 260;★ 64bit版だとvarptrが問題になるかも? dialog str(folder_name),0,"これがドロップされました" DragFinish hdrop; ドロップファイル情報をクリア (これをしないとメモリリークになる) oncmd 1 return

