HSP2.x系で、アルファベットの大文字と小文字を相互変換するサンプルモジュール
Hot Soup Processor 2.x系で使える、アルファベットの大文字化と小文字化のサンプルコードです。モジュール化してあります。
こういう処理は、素直にC言語でDLL化して済ませちゃった方が高速な気がしますけどねw
こういう処理は、素直にC言語でDLL化して済ませちゃった方が高速な気がしますけどねw
;
; strlower p1
; strupper p1
;
; p1=変数 : 変換する文字列型変数
;
; strlowerは、アルファベットの大文字を小文字に変換、
; strupperは、小文字を大文字に変換します。
;
; C言語のstrlwr,struprや、palhspのpal_StrLwr,Uprと違い、2バイト文字が含まれていても
; 文字化けする事無く変換出来ますが、その分低速かも知れません。(^^;
; 1バイトのアルファベットのみ変換。
;
; (使用例)
; a="AbCdEfgHiJKlmnOPQRstuVWxyZ"
; strupper a
; dialog a
;
#module
#deffunc strlower val
mref dat,24
strlen len,dat
repeat len
if FLG==0{
peek pe,dat,cnt
if pe>=129&&(pe<=159) : FLG=1 ;2バイト文字判定
if pe>='A'&&(pe<='Z') : poke dat,cnt,pe+32
}
else{
FLG=0
}
loop
return
#deffunc strupper val
mref dat,24
strlen len,dat
repeat len
if FLG==0{
peek pe,dat,cnt
if pe>=129&&(pe<=159) : FLG=1 ;2バイト文字判定
if pe>='a'&&(pe<='z') : poke dat,cnt,pe-32
}
else{
FLG=0
}
loop
return
#global
; strlower p1
; strupper p1
;
; p1=変数 : 変換する文字列型変数
;
; strlowerは、アルファベットの大文字を小文字に変換、
; strupperは、小文字を大文字に変換します。
;
; C言語のstrlwr,struprや、palhspのpal_StrLwr,Uprと違い、2バイト文字が含まれていても
; 文字化けする事無く変換出来ますが、その分低速かも知れません。(^^;
; 1バイトのアルファベットのみ変換。
;
; (使用例)
; a="AbCdEfgHiJKlmnOPQRstuVWxyZ"
; strupper a
; dialog a
;
#module
#deffunc strlower val
mref dat,24
strlen len,dat
repeat len
if FLG==0{
peek pe,dat,cnt
if pe>=129&&(pe<=159) : FLG=1 ;2バイト文字判定
if pe>='A'&&(pe<='Z') : poke dat,cnt,pe+32
}
else{
FLG=0
}
loop
return
#deffunc strupper val
mref dat,24
strlen len,dat
repeat len
if FLG==0{
peek pe,dat,cnt
if pe>=129&&(pe<=159) : FLG=1 ;2バイト文字判定
if pe>='a'&&(pe<='z') : poke dat,cnt,pe-32
}
else{
FLG=0
}
loop
return
#global
最初に記事を書いた日:2017/10/30
この記事をシェアする
関連記事
- ・HSP2.xで、MIDIファイルのヘッダ情報を調べるモジュール
- ・HSP2.xで、LHA書庫の圧縮と解凍を実現するモジュール
要loadlib&llmod - ・HSP2.xで、HTMLファイル内のリンク先を列挙するサンプルコード(モジュール付き)
- ・HSP2.x系で、ファイルパスから、ファイル名やフォルダ名を取得するサンプルモジュール
- ・HSP2.x系で、平方根の近似値を整数で取得するサンプルモジュール
- ・HSP2.x系で、getkey、stick命令のキー番号を取得・表示するサンプルコード
- ・HSP2.x系で、円の中心に向かってグラデーションをかけるサンプルコード
- ・HSP2.x系用 ベンチマークプログラム ソースコード
- ・HSP2.xでMDIウインドウを作成するサンプルコード
要loadlib&llmod