GENKIさんありがとうございます おかげで全角か半角かの区別には成功しました
したのスクリプトを実行すると
strlenでは調べられない、全角と半角が混じった文章の文字数を調べられます
#module
#defcfunc dtox int prm1
;----------------------------------------------------------
; 渡された10進数を16進数へ
;----------------------------------------------------------
; prm1 10進数の数値
;----------------------------------------------------------
; 戻り値
; stat=0 成功,16進数を文字列で
;----------------------------------------------------------
word=strf("%x",prm1)
return word
#defcfunc xtod str prm1
;----------------------------------------------------------
; 渡された16進数を10進数へ
;----------------------------------------------------------
; prm1 16進数の文字列
;----------------------------------------------------------
; 戻り値
; stat=0 成功,10進数を数値で
;----------------------------------------------------------
x=prm1 : d=0 : size=strlen(prm1)
repeat size
getstr n,x,cnt,'g',1
if n="a" : n=10
if n="b" : n=11
if n="c" : n=12
if n="d" : n=13
if n="e" : n=14
if n="f" : n=15
d*=16 : d+=int(n)
loop
return d
#defcfunc strtobin str prm1
;----------------------------------------------------------
; 渡された文字列をバイナリ値(16進数)の数列にへ変換
;----------------------------------------------------------
; prm1 変換したしたい文字列
;----------------------------------------------------------
; 戻り値
; stat=0 成功,statに16進数の数値が代入
;----------------------------------------------------------
size=strlen(prm1) : word=prm1
bin=""
repeat size
bin+=strf("%x",peek(word,cnt))
loop
return bin
#defcfunc bintostr str prm1
;----------------------------------------------------------
; 渡されたバイナリデータから文字数を調べる
;----------------------------------------------------------
; prm1 バイナリデータ
;----------------------------------------------------------
; 戻り値 文字数
;----------------------------------------------------------
bin=prm1 : size=strlen(prm1)/2 : word="" : mozi=0 : f=0
repeat size
if f=1 : f=0 : continue : else : mozi+=1
getstr code,bin,cnt*2,'g',2
code2=xtod(code)
if ((code2>=129)&(code2<=159))|((code2>=224)&(code2<=252)) : f=1 : else : f=0
loop
return mozi
#global
//▼▼▼▼▼▼以下 モジュールテスト用のスクリプト▼▼▼▼▼▼
/**/
word="くぁwせdrftgyふじこlp"////////////ここでいろいろ変わります
dialog "「"+word+"」を文字コードであらわすと\n\n"+strtobin(word)+"\n\nとなります"
dialog "「"+word+"」は"+bintostr(strtobin(word))+"文字です"
で ここからなのですが
シフトJISコードに照会して文字コードを文字に変換する
方法が分からないのです
「文字コードと文字の対応を表にしたテーブルを作る必要があるのかなー」
とか考えてみましたが、そもそもシフトJISの文字コードを取得する方法が分かりません
わかるかたいらっしゃいますか?