#define global LCMAP_LOWERCASE 0x00000100
#define global LCMAP_UPPERCASE 0x00000200
#define global LCMAP_HIRAGANA 0x00100000
#define global LCMAP_KATAKANA 0x00200000
#define global LCMAP_HALFWIDTH 0x00400000
#define global LCMAP_FULLWIDTH 0x00800000
ll_libload kernel, "kernel32.dll"
ll_getproc GetUserDefaultLCID, "GetUserDefaultLCID", kernel
ll_callfunc prm, 0, GetUserDefaultLCID
ll_ret GetUserDefaultLCID
ll_getproc LCMapStringA, "LCMapStringA", kernel
#module
#deffunc strconv val, int, int, int
mref string, 24 : mref size, 1 : mref kana, 2 : mref wide, 3
mref rstr, 65
prm = GetUserDefaultLCID@, 0, 0, -1, 0, 4096
if size : if size = 1 : prm.1 += LCMAP_LOWERCASE@ : else : prm.1 += LCMAP_UPPERCASE@
if kana : if kana = 1 : prm.1 += LCMAP_HIRAGANA@ : else : prm.1 += LCMAP_KATAKANA@
if wide : if wide = 1 : prm.1 += LCMAP_HALFWIDTH@ : else : prm.1 += LCMAP_FULLWIDTH@
ll_getptr string : ll_ret prm.2
ll_getptr rstr : ll_ret prm.4
ll_callfunc prm, 6, LCMapStringA@
return
#global
sdim data, 128
data = "12345あガさダナパマヤらゎワゐヲゑンヴヵヶーーAbCdEfG"
font "MS 明朝", 16
mes "元の文字列 " + data
strconv data, 1
mes "大文字⇒小文字 " + refstr
strconv data, 2
mes "小文字⇒大文字 " + refstr
strconv data, 0, 1
mes "片仮名⇒平仮名 " + refstr
strconv data, 0, 2
mes "平仮名⇒片仮名 " + refstr
strconv data, 1, 0, 1
mes "全角⇒半角小文字 " + refstr // 片仮名も半角カナになります
strconv data, 2, 0, 2
mes "半角⇒全角大文字 " + refstr // 半角カナも片仮名になります
strconv data, 0, 2, 1
mes "全カナ⇒半角カナ " + refstr // 全角英数も半角化されます
stop
|