リファレンス 2 ドキュメント 0 サンプル 1
hspint64.dll 27

hspint64.dll

Path : sample\hspint64.dll
01_int64.hsp
#include "hsp3_64.as" #include "hspint64.as" int64() 文字列または数値からint64型へ変換します。
sample\hspint64.dll\01_int64.hsp - 2021/05/08
02_dim64.hsp
#include "hsp3_64.as" #include "hspint64.as" dim64 int64型の配列変数を作成します dim64 i64, 16 mes "要素数" + length(i64) repeat length(i64) i64(cnt) = int64("2147483647") + cnt loop repeat length(i64) mes i64(cnt) loop dimtype でも同じことができます dimtype i64_2,
sample\hspint64.dll\02_dim64.hsp - 2021/05/08
03_qpeek、qpoke.hsp
#include "hsp3_64.as" #include "hspint64.as" qpeek、qpoke 8バイト単位のデータの読み書きを行います sdim buf, 64 qpoke buf, 0, int64("9223372036854775807") mes "qpeek: " + qpeek(buf, 0) これでも動きます。 文字列型を渡した場合は、int64へ自動変換します。
sample\hspint64.dll\03_qpeek、qpoke.hsp - 2021/05/08
04_varptr64.hsp
#include "hsp3_64.as" #include "hspint64.as" #uselib "user32.dll" #func MessageBoxW "MessageBoxW" sptr,wstr,wstr,int varptr64 変数データのポインタ(64bit)を返します sdim buf, 64 mes "変数bufのポインタ: " + varptr64(buf) mes "MessageBoxW関数のポインタ: " + varptr64(MessageBoxW)
sample\hspint64.dll\04_varptr64.hsp - 2021/05/08
05_dupptr64.hsp
#include "hsp3_64.as" #include "hspint64.as" dupptr64 ポインタ(64bit)からクローン変数を作成します sdim buf, 64 buf = "ABCDEFG" ポインタ経由でクローンの作成 dupptr64 cloneBuf, varptr64(buf), 64, vartype("str") mes "元: " + buf mes "クローン: " + cloneBuf なお、 #define
sample\hspint64.dll\05_dupptr64.hsp - 2021/05/08
06_libptr64.hsp
#include "hsp3_64.as" #include "hspint64.as" libptr64 外部呼出しコマンドの情報アドレス(64bit)を取得します #uselib "user32.dll" #func MessageBoxA "MessageBoxA" int,sptr,sptr,int ladr=libptr64( MessageBoxA ) dupptr lptr,ladr,32 STRUCTDAT構造体を取得 lib_id=wpeek(lptr,0) mes
sample\hspint64.dll\06_libptr64.hsp - 2021/05/09
10_float.hsp
#include "hsp3_64.as" #include "hspint64.as" float float値に変換します。
sample\hspint64.dll\10_float.hsp - 2021/05/08
11_fdim.hsp
#include "hsp3_64.as" #include "hspint64.as" fdim float型の配列変数を作成します fdim fArray, 16 mes "要素数" + length(fArray) repeat length(fArray) fArray(cnt) = float(1.0) + cnt loop repeat length(fArray) mes fArray(cnt) loop dimtype でも同じことができます dimtype fArray_2,
sample\hspint64.dll\11_fdim.hsp - 2021/05/08
12_floatとfloatintの違い.hsp
#include "hsp3_64.as" #include "hspint64.as" float for HSP モジュール http: spn.php.xdomain.jp/hsp_koneta3.htm#tofloat #module #defcfunc todouble int p1 temp = 0.0 lpoke temp, 4, (p1 & 0x80000000) | (((p1 & 0x7fffffff) >> 3) + ((p1 & 0x7fffffff) ! 0) *
sample\hspint64.dll\12_floatとfloatintの違い.hsp - 2021/05/08
20_strw.hsp
#include "hsp3_64.as" #include "hspint64.as" strw Unicode文字列(UTF-16)型に変換 UTF-8 -> UTF-16 へ変換 u16 = strw("ABCDE?あいうえお") mes "UTF-16: " + u16 UTF-16 -> UTF-8 へ変換 u8 = str(u16) mes "UTF-8: " + u8 標準命令に cnvstow もありますが、 mes で直接表示できないなど扱いにくいです。
sample\hspint64.dll\20_strw.hsp - 2021/05/08
21_swdim.hsp
#include "hsp3_64.as" #include "hspint64.as" swdim Unicode文字列(UTF-16)型配列変数を作成します swdim wstr, 1024, 16 mes "要素数" + length(wstr) repeat length(wstr) 注意! wstr(cnt) = cnt wstr(cnt) = "" + cnt と記述すると、配列が数値型や文字列型(UTF-8)に変換されてしまいます wstr(cnt) = _T(cnt) loop
sample\hspint64.dll\21_swdim.hsp - 2021/05/08
22_strwlen.hsp
#include "hsp3_64.as" #include "hspint64.as" strwlen Unicode(UTF-16)文字列の長さを調べます UTF-8 -> UTF-16 へ変換 u16 = strw("ABCDE?あいうえお") mes "UTF-16: " + u16 UTF-16は1文字2byte (※ サロゲートペアは除く) mes "文字数: " + strwlen(u16) mes "byte数: " + (strwlen(u16) * 2) mes ""
sample\hspint64.dll\22_strwlen.hsp - 2021/05/08
23_strwrep.hsp
#include "hsp3_64.as" #include "hspint64.as" strwrep Unicode(UTF-16)文字列の置換します buf = _T("あいうえお?ABCDE?") mes "置換前: " + buf 以下でも大丈夫です。
sample\hspint64.dll\23_strwrep.hsp - 2021/05/08
24_instrw.hsp
#include "hsp3_64.as" #include "hspint64.as" instrw Unicode(UTF-16)文字列の検索をします buf = _T("あいうえお?ABCDE?") mes "検索文字列: " + buf 以下でも大丈夫です。
sample\hspint64.dll\24_instrw.hsp - 2021/05/08
25_strwupper.hsp
#include "hsp3_64.as" #include "hspint64.as" strwupper Unicode(UTF-16)文字列を大文字に変換をします buf = _T("AbCdEfGhあいうえお") mes "大文字化: " + strwupper(buf)
sample\hspint64.dll\25_strwupper.hsp - 2021/05/08
26_strwlower.hsp
#include "hsp3_64.as" #include "hspint64.as" strwlower Unicode(UTF-16)文字列を小文字に変換をします buf = _T("AbCdEfGhあいうえお") mes "大文字化: " + strwlower(buf)
sample\hspint64.dll\26_strwlower.hsp - 2021/05/08
27_strwinsert.hsp
#include "hsp3_64.as" #include "hspint64.as" strwinsert Unicode(UTF-16)文字列内の指定したインデックスに文字列を挿入 u16 = _T("ABDE") mes strwinsert(u16, 2, "C") Cを入れ忘れた mes strwinsert(u16, 4, _T("FG")) FGを後ろに
sample\hspint64.dll\27_strwinsert.hsp - 2021/05/08
28_strwmid.hsp
#include "hsp3_64.as" #include "hspint64.as" strwmid Unicode(UTF-16)文字列の一部を取り出す b = _T("ABCDEF") mes b a = strwmid( b, -1, 3 ) 右から3文字を取り出す mes a a = strwmid( b, 1, 3 ) 左から2文字目から3文字を取り出す mes a
sample\hspint64.dll\28_strwmid.hsp - 2021/05/08
29_strwtrim.hsp
#include "hsp3_64.as" #include "hspint64.as" strwtrim 指定した文字(Unicode(UTF-16))だけを取り除く 例1 a = _T(" ABC DEF ") b = strwtrim( a, 0, ' ') mes b 例2 a = _T("@*ABC@*DEF@*") b = strwtrim( a, 0, "@*") こっちでも可 b = strwtrim( a, 0, _T("@*")) 両端のみ除去 mes b 例3 s =
sample\hspint64.dll\29_strwtrim.hsp - 2021/05/08
30_strwcomp.hsp
#include "hsp3_64.as" #include "hspint64.as" strwcomp Unicode(UTF-16)文字列同士を比較 大文字小文字を区別する比較 mes strwcomp( _T("ABCDEF"), _T("abcdef"), 0) 大文字小文字を区別しない比較 mes strwcomp( _T("ABCDEF"), _T("abcdef"), 1)
sample\hspint64.dll\30_strwcomp.hsp - 2021/05/08
31_L(),_T() マクロ.hsp
#include "hsp3_64.as" #include "hspint64.as" _T(), L() マクロ #ifdef __hsp64__ 基本的には、strw のマクロです。 mes strw("ABCDEF UTF-16") mes _T("ABCDEF UTF-16") mes L("ABCDEF UTF-16") #else まだ存在していませんが、 32bit版(標準ランタイム)の時は解釈の仕方が変わる予定です。
sample\hspint64.dll\31_L(),_T() マクロ.hsp - 2021/05/08
32_UTF-16文字列操作時注意点.hsp
#include "hsp3_64.as" #include "hspint64.as" - 文字列操作時注意点 - - [ありがちな失敗例] UTF-16型文字列変数を確保したが、 格納する際に、UTF-8 文字列を入れてしまっている。 swdim buf, 1024 buf = "あいうえお" UTF-16 のまま取り扱うには、以下のようにする。
sample\hspint64.dll\32_UTF-16文字列操作時注意点.hsp - 2021/05/08
40_callfunc64系.hsp
#include "hsp3_64.as" #include "hspint64.as" #uselib "user32.dll" #func MessageBoxA "MessageBoxA" int,int,int,int #func MessageBoxW "MessageBoxW" int,int,int,int #define MB_ICONINFORMATION $40 #define MB_OK 0 - callfunc64系 - 戻り値の型によって使用する関数が違い、
sample\hspint64.dll\40_callfunc64系.hsp - 2021/05/08
41_cfunc64系.hsp
#include "hsp3_64.as" #include "hspint64.as" #uselib "user32.dll" #func MessageBoxA "MessageBoxA" int,int,int,int #func MessageBoxW "MessageBoxW" int,int,int,int #define MB_ICONINFORMATION $40 #define MB_OK 0 #uselib "kernel32.dll" #func
sample\hspint64.dll\41_cfunc64系.hsp - 2021/05/08
42_引数が構造体の値渡しの場合.hsp
#include "hsp3_64.as" #include "hspint64.as" #uselib "user32.dll" #func WindowFromPoint "WindowFromPoint" int, int - 引数が構造体の値渡しの場合 - WindowFromPoint 関数の引数はPOINT構造体ですが、 ポインタではなく値渡しになっています。
sample\hspint64.dll\42_引数が構造体の値渡しの場合.hsp - 2021/05/08
43_戻り値が構造体の値渡しの場合.hsp
#include "hsp3_64.as" #include "hspint64.as" - 戻り値が構造体の値渡しの場合 - Win32APIでは見たことがありませんが、DXライブラリなどは 戻り値が構造体の値渡しになっているケースがあります。 その場合の呼び出し方の例です。 ※ Win32APIなどでよくある戻り値が構造体のポインタの場合は、cfunc64i64() の戻り値をdupptrなどで参照してください。
sample\hspint64.dll\43_戻り値が構造体の値渡しの場合.hsp - 2021/05/09
50_コールバック関数(EnumWindows).hsp
title "EnumWindows() の実験 ※コールバック関数のテスト" コールバック関数作成 EnumWindowsProc = callback64_new( 2, *lbEnumWindowsProc) pEnumWindowsProc = callback64_getptr( EnumWindowsProc) EnumWindows() を呼び出す nCount = 0 cfunc64v EnumWindows, pEnumWindowsProc, varptr(nCount)
sample\hspint64.dll\50_コールバック関数(EnumWindows).hsp - 2021/06/20