検索
AND検索
OR検索
トップ
|
リロード
|
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
Shift_JIS をテンプレートにして作成
メニュー
簡易掲示板
LINK集
y.tackの公式BBSブックマーク
practice room
?
最新の20件
2022-10-09
多角形の内外判定
2021-05-19
RecentDeleted
2018-08-01
FrontPage
文字列型変数管理サブルーチン
GAME作成システム
2018-07-31
double型変数管理サブルーチン
int型変数管理サブルーチン
2018-07-21
GUIとメイン分割処理。たたき台2
2018-07-11
memo
NO_579_sample
GUIとメイン分割処理。たたき台
2018-06-28
NO_714
NO_712
NO_706
NO_705
NO_704
NO_703
NO_702
2018-06-23
Shift_JIS
モートン番号テーブル化 / 八分木
total
0
today
0
yesterday
0
now
1
Menu
Total:0/Today:0
開始行:
----
#contents
----
HSP でのシフトジスに関するページ~
このページでは HSP によるシフトジスにまつわる情報をまとめ...
Windows 版の HSP が標準的に扱う文字の種類はシフトジスと...
ただしシフトジスにも扱えない文字が多くあるため、更に多く...
*シフトジスの判定 [#o9b17c20]
シフトジスは1文字を表すために1バイト〜2バイトを必要と...
そのため自分で一文字ずつ扱いたい場合には、その一文字が1...
**シフトジスの文字コードの範囲表 [#k9f2d8a4]
ascii は半角のアルファベットや記号や制御文字を扱う文字コ...
shift_jis は ascii を含めて日本語なども扱えるようにした文...
以下に文字コードの値の範囲を表にして見ました。
#ref(sjis_range.png)
ピンクがアスキーの範囲、~
ライトブルーが2バイト文字のリードバイト、~
イエローがそのトレイルバイト。
シフトジスは1文字で2バイト必要な時、初めのバイトをリー...
**getstr を使って判定する [#t0c46c94]
とりあえず手っ取り早くやるには、getstr の内部に判定処理が...
txt = "abcあいうxyz"
i = 0
repeat
getstr get, txt, i,, 1 ; 一文字取得
if strsize = 0 :break
i += strsize
mes get + "(" + strlen(get) + ")"
loop
**シフトジスの文字コードの範囲を調べて判定する [#pdf7592b]
文字列中に混在した文字を自分で判定して区別したい場合は、...
文字コードの判定は上の文字コード表の範囲かどうかを if 命...
以下はリードバイトのみを判定する処理。
// 判定用マクロ、パラメータに指定した文字コードがシフト...
// シフトジスのリードバイト なら 1 が返る、違えば 0 が返る
#define global ctype IS_SJIS(%1) ( ( $81 <= (%1) ) & ( (...
txt = "abcあいうxyz"
repeat strlen(txt)
code = peek(txt, cnt)
if IS_SJIS(code) {
mes strmid(txt, cnt, 2)
pos GINFO_CX + GINFO_MESX + 8, 0
continue cnt + 2
} else {
mes strmid(txt, cnt, 1)
pos GINFO_CX + GINFO_MESX + 8, 0
}
loop
**シフトジスの範囲判定処理の効率化 [#na3814d4]
上のシフトジス判定処理の計算量を減らして効率化する。~
このサイト:http://www5d.biglobe.ne.jp/~noocyte/Programmi...
と、その中にある「~
┌ここで見つけた巧妙な判定方法.~
↓(上の方法に比べ,条件分岐が2〜4回から1回に減るので...
初級C言語Q&A(15)【シフトJISの1バイト目の判定】~
」~
の部分に張ってあるリンク先:http://www.st.rim.or.jp/~phin...
の内容を参考に判定方法を HSP 用に書き換えて見たもの。~
上の項目と同様に、以下はリードバイトのみを判定する。
// 判定用マクロ
#define ctype IS_SJIS(%1) ( (((%1) ^ $20) - $A1 & $FF) <...
text = "あabいcdうeえfおg"
repeat strlen(text)
c = peek(text, cnt)
if IS_SJIS(c) {
mes strmid(text, cnt, 2) + " 1"
continue cnt + 2
} else {
mes strmid(text, cnt, 1) + " 0"
}
loop
これを書いてから思い出したが、昔どこかで HSP での似た様な...
*その他 [#q3567379]
シフトジスとは直接関係無いが小ネタ的なもの。
**無作為に選んだ文字列中の場所からその行の先頭を見つける ...
HSP での改行は CRLF で数値に直すと CR=0x0d(13), LF=0x0a(1...
// 対象文字列
text = "abcdefg\nあいうえお\nhijklmn\nかきくけこ\nopqrs...
mes text
objsize 150, 25
button "ランダム位置から行頭取得", *BTN
cy = GINFO_CY
randomize
stop
*BTN
len = strlen(text) ; 全体文字列長
random = rnd(len) ; 文字列長以内の乱数取得
index = random ; 乱数を開始インデックスに
// 遡って行頭を見つける
repeat
// 改行なら次の文字に(手抜き)
if peek(text, index) = $0a :index ++ :break
if peek(text, index) = $0d :index ++ :continue
if index = 0 :break ; 0 文字目に来たら抜ける
index -- ; 逆向きに探す
loop
// 結果表示
getstr get, text, index ; 見つけた行頭から1行分取得
result = strf("行頭位置:%d / 乱数:%d / 全体の文字列長...
color 255, 255, 255 :boxf 0, cy, GINFO_WINX, GINFO_WINY
color :pos 0, cy :mes result
終了行:
----
#contents
----
HSP でのシフトジスに関するページ~
このページでは HSP によるシフトジスにまつわる情報をまとめ...
Windows 版の HSP が標準的に扱う文字の種類はシフトジスと...
ただしシフトジスにも扱えない文字が多くあるため、更に多く...
*シフトジスの判定 [#o9b17c20]
シフトジスは1文字を表すために1バイト〜2バイトを必要と...
そのため自分で一文字ずつ扱いたい場合には、その一文字が1...
**シフトジスの文字コードの範囲表 [#k9f2d8a4]
ascii は半角のアルファベットや記号や制御文字を扱う文字コ...
shift_jis は ascii を含めて日本語なども扱えるようにした文...
以下に文字コードの値の範囲を表にして見ました。
#ref(sjis_range.png)
ピンクがアスキーの範囲、~
ライトブルーが2バイト文字のリードバイト、~
イエローがそのトレイルバイト。
シフトジスは1文字で2バイト必要な時、初めのバイトをリー...
**getstr を使って判定する [#t0c46c94]
とりあえず手っ取り早くやるには、getstr の内部に判定処理が...
txt = "abcあいうxyz"
i = 0
repeat
getstr get, txt, i,, 1 ; 一文字取得
if strsize = 0 :break
i += strsize
mes get + "(" + strlen(get) + ")"
loop
**シフトジスの文字コードの範囲を調べて判定する [#pdf7592b]
文字列中に混在した文字を自分で判定して区別したい場合は、...
文字コードの判定は上の文字コード表の範囲かどうかを if 命...
以下はリードバイトのみを判定する処理。
// 判定用マクロ、パラメータに指定した文字コードがシフト...
// シフトジスのリードバイト なら 1 が返る、違えば 0 が返る
#define global ctype IS_SJIS(%1) ( ( $81 <= (%1) ) & ( (...
txt = "abcあいうxyz"
repeat strlen(txt)
code = peek(txt, cnt)
if IS_SJIS(code) {
mes strmid(txt, cnt, 2)
pos GINFO_CX + GINFO_MESX + 8, 0
continue cnt + 2
} else {
mes strmid(txt, cnt, 1)
pos GINFO_CX + GINFO_MESX + 8, 0
}
loop
**シフトジスの範囲判定処理の効率化 [#na3814d4]
上のシフトジス判定処理の計算量を減らして効率化する。~
このサイト:http://www5d.biglobe.ne.jp/~noocyte/Programmi...
と、その中にある「~
┌ここで見つけた巧妙な判定方法.~
↓(上の方法に比べ,条件分岐が2〜4回から1回に減るので...
初級C言語Q&A(15)【シフトJISの1バイト目の判定】~
」~
の部分に張ってあるリンク先:http://www.st.rim.or.jp/~phin...
の内容を参考に判定方法を HSP 用に書き換えて見たもの。~
上の項目と同様に、以下はリードバイトのみを判定する。
// 判定用マクロ
#define ctype IS_SJIS(%1) ( (((%1) ^ $20) - $A1 & $FF) <...
text = "あabいcdうeえfおg"
repeat strlen(text)
c = peek(text, cnt)
if IS_SJIS(c) {
mes strmid(text, cnt, 2) + " 1"
continue cnt + 2
} else {
mes strmid(text, cnt, 1) + " 0"
}
loop
これを書いてから思い出したが、昔どこかで HSP での似た様な...
*その他 [#q3567379]
シフトジスとは直接関係無いが小ネタ的なもの。
**無作為に選んだ文字列中の場所からその行の先頭を見つける ...
HSP での改行は CRLF で数値に直すと CR=0x0d(13), LF=0x0a(1...
// 対象文字列
text = "abcdefg\nあいうえお\nhijklmn\nかきくけこ\nopqrs...
mes text
objsize 150, 25
button "ランダム位置から行頭取得", *BTN
cy = GINFO_CY
randomize
stop
*BTN
len = strlen(text) ; 全体文字列長
random = rnd(len) ; 文字列長以内の乱数取得
index = random ; 乱数を開始インデックスに
// 遡って行頭を見つける
repeat
// 改行なら次の文字に(手抜き)
if peek(text, index) = $0a :index ++ :break
if peek(text, index) = $0d :index ++ :continue
if index = 0 :break ; 0 文字目に来たら抜ける
index -- ; 逆向きに探す
loop
// 結果表示
getstr get, text, index ; 見つけた行頭から1行分取得
result = strf("行頭位置:%d / 乱数:%d / 全体の文字列長...
color 255, 255, 255 :boxf 0, cy, GINFO_WINX, GINFO_WINY
color :pos 0, cy :mes result
ページ名: