HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1230
herrcfuncで読み込んだ関数を呼び出しているのに「配列の要素は無効です」エラーが出る3解決


herr

リンク

2011/12/30(Fri) 00:10:24|NO.43976

既存スクリプトに「クリップボードを扱う関数」を組み込みたいと思っています。
HSP-NEXTのサンプル(http://hspnext.com/hspkura/hspkura04.htm#contents09)の
getcliptextをそのまま使おうと、以下のように組み込ました。


#uselib "psapi.dll" #cfunc global EnumProcessModules "EnumProcessModules" int,sptr,int,sptr #func global GetModuleFileNameEx "GetModuleFileNameExA" int,int,sptr,int #uselib "kernel32.dll" #cfunc global GlobalLock "GlobalLock" int #cfunc global GlobalSize "GlobalSize" int #func global GlobalUnlock "GlobalUnlock" int #cfunc global lstrcpy "lstrcpy" int,int #cfunc global GlobalAlloc "GlobalAlloc" int,int #define global CreateMutex CreateMutexA #func global CreateMutexA "CreateMutexA" sptr,sptr,sptr #cfunc global GetLastError "GetLastError" #func global GetModuleFileName "GetModuleFileNameA" int,var,int #cfunc global GetCurrentThreadId "GetCurrentThreadId" #cfunc global OpenProcess "OpenProcess" sptr,sptr,sptr #func global GetExitCodeProcess "GetExitCodeProcess" sptr,sptr #func global ExitProcess "ExitProcess" sptr #func global CloseHandle "CloseHandle" sptr #uselib "shell32.dll" #func global ExtractIconEx "ExtractIconExA" int,int,int,int,int #func global Shell_NotifyIcon "Shell_NotifyIcon" int,int #func global SHAppBarMessage "SHAppBarMessage" sptr,sptr #define global ShellExecute ShellExecuteA #func global ShellExecuteA "ShellExecuteA" sptr,sptr,sptr,sptr,sptr,sptr #uselib "user32.dll" #func global OpenClipboard "OpenClipboard" int #cfunc IsClipboardFormatAvailable "IsClipboardFormatAvailable" int #cfunc GetClipboardData "GetClipboardData" int #func global CloseClipboard "CloseClipboard" #func global EmptyClipboard "EmptyClipboard" #func global SetClipboardData "SetClipboardData" int,int #define global GetClassName GetClassNameA #func global GetClassNameA "GetClassNameA" sptr,sptr,sptr #cfunc global GetSystemMenu "GetSystemMenu" sptr,sptr #func global DeleteMenu "DeleteMenu" sptr,sptr,sptr #define global SetWindowLong SetWindowLongA #func global SetWindowLongA "SetWindowLongA" sptr,sptr,sptr #define global GetWindowLong GetWindowLongA #cfunc global GetWindowLongA "GetWindowLongA" sptr,sptr #func global SetWindowPos "SetWindowPos" sptr,sptr,sptr,sptr,sptr,sptr,sptr #define global SystemParametersInfo SystemParametersInfoA #func global SystemParametersInfoA "SystemParametersInfoA" sptr,sptr,sptr,sptr #func global GetWindowThreadProcessId "GetWindowThreadProcessId" sptr,sptr #func global AttachThreadInput "AttachThreadInput" int,int,int #func global GetWindowRect "GetWindowRect" sptr,sptr #define global GetWindowText GetWindowTextA #func global GetWindowTextA "GetWindowTextA" sptr,sptr,sptr #define global GetWindowTextLength GetWindowTextLengthA #cfunc global GetWindowTextLengthA "GetWindowTextLengthA" sptr #func global SetForegroundWindow "SetForegroundWindow" sptr #cfunc global GetForegroundWindow "GetForegroundWindow" #define global AppendMenu AppendMenuA #func global AppendMenuA "AppendMenuA" sptr,sptr,sptr,sptr #cfunc global CreatePopupMenu "CreatePopupMenu" #cfunc global TrackPopupMenu "TrackPopupMenu" sptr,sptr,sptr,sptr,sptr,sptr,sptr #func global DestroyMenu "DestroyMenu" sptr #module //getcliptextの中身をここに書いている #global //動作確認 a="" getcliptext a mes a stop

ですが、これを動作させると「配列の要素が無効です」エラーが発生します。
該当行は67行で、以下のようになっています。

ret=IsClipboardFormatAvailable(CF_OEMTEXT)
IsClipboardFormatAvailable関数を定義しているのに
配列だと扱われているというおかしな現象に見舞われています。

このエラーの原因は何でしょうか。また、どうやったら直せるでしょうか。



この記事に返信する


XBG|YAMANOTE231103(PC)

リンク

2011/12/30(Fri) 00:52:54|NO.43977

getcliptextの内容を書いてくれないと回答者がテストするのがめんどくさいです。
ちゃんと組んだスクリプトの全文を書いてください。



暇人

リンク

2011/12/30(Fri) 01:15:05|NO.43978


#func global OpenClipboard "OpenClipboard" int #cfunc IsClipboardFormatAvailable "IsClipboardFormatAvailable" int
OpenClipboardではエラー出てない事考えて何が違うか良く見て



herr

リンク

2011/12/30(Fri) 10:23:39|NO.43979

getcliptextの内容を書いていないのは、
HSP-NEXTにて「スクリプトの無断転載禁止」と指定されていたからです。
ご不便をおかけしてすみません。

違いがわかりました。
globalが抜けていたということですね。
globalを記述して確認してみたところ動作しました。

今見ればくだらないミスですが、これに全然気付けなかったのが不思議です…
何はともあれ、ありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.