HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
0527
tny全角スペースの検出法と削除6解決


tny

リンク

2009/5/27(Wed) 00:18:55|NO.25402

 とあるゲームを作成中なのですが、
 そのゲームではユーザ名登録の機能をつけようと思っています。
 ユーザー名が登録されれば、そのユーザ名のフォルダと設定ファイルを作って
 ユーザのゲームでの記録等を記録させようとしています。

 その、ユーザー名登録の場面で
 ユーザ名として(半角スペース = 半 : 全角スペース = 全)
  
  半+半+半

と入力すれば、そのようなフォルダは作成することができませんので当然エラーになります。

 ゆえに、そのような半角スペースのみのユーザー名が入力されれば、
 フォルダ等を作成せず、再度、ユーザー名登録を求めるプログラムは組むことができました。

 しかし、

  半+半+全+半

 など、全角スペースと半角スペースの混合の文字列だと、次のようなプログラムだと検出してくれません。

sentence = "   " // 半+半+全+半 n = strlen( sentence ) a = "" i = 0 repeat n a = strmid(sentence,cnt,1) if (a ! " ")and(a ! " "){ dialog cnt i++ } loop if i = 0 {     dialog "空白しか存在しません"     ユーザー名を再度求める   }   else {     ゲーム画面へ   }
 
 かなり初心者的な質問でイライラされた方もおられるでしょうが、
 どうか寛大な心で見ていただければ幸いです。



この記事に返信する


cd

リンク

2009/5/27(Wed) 01:11:33|NO.25405

>>次のようなプログラムだと検出してくれません。
正常に動いているようですが。

ただ、14〜19行目の行頭の空欄が全角スペースなので、
そのまま実行するとエラーになりますが。



たこ

リンク

2009/5/27(Wed) 01:14:09|NO.25406

HSPで扱う文字列をUNICODE文字列に変換して調べる方法
1文字を2バイトとしてみて、文字列中に0x0020(半角スペース)と0x3000(全角スペース)だけしかないかを調べています

sentence = "   " // 半+半+全+半 dim ws, strlen( sentence ) / 2 cnvstow ws, sentence repeat c = wpeek(ws(cnt/2), (cnt\2) * 2) mes strf("%04x", c) if c == 0x0000 { i = 1 break } if c != 0x0020 && c != 0x3000 { i = 0 break } loop if i == 1 { dialog "空白だけ" }else{ dialog "おk" }



tny

リンク

2009/5/27(Wed) 01:20:24|NO.25407

 ありがとうございました。
 まだ、あげていただいたリストを走らせたばかりですが、
  これで、どうにかできそうです。

 動作原理は、まだ、いまいちよくわからないですが
  今後 Unicode 文字列 等で検索して、探るつもりです。

 本当にありがとうございました。



KA

リンク

2009/5/27(Wed) 16:31:38|NO.25412

tny様>>cd様の仰る通り(消しても正常とは思えないが)です。
一応解決となっていますが原因不明のまま、別の道を模索するのは如何なものかと。
下記部分を修正し試してください、何かが分かります。
分かった上で他の方法を探すのと、分からずに他の方法に逃げるのは違います。

>>n=strlen(sentence) ←nは5です。
>>if (a ! " ")and(a ! " "){
>> dialog cnt
>> mes a ←追加してください。
>> i++
>> }
>> loop

たこ様>>何が悪いのか説明せずに、別の方法を提示するのは・・・。



SYAM

リンク

2009/5/27(Wed) 17:10:26|NO.25413

問題とは直接は関係ないですが、

>ユーザー名が登録されれば、そのユーザ名のフォルダと設定ファイルを作って

…という動作をさせるなら、当然、ユーザー名として使える文字列には ファイルシステムによる制限がついてきます。
スペースの問題だけに限らず、ファイル・フォルダ名としては「使えない文字」や「使えない文字列」があることに、じゅうぶん注意してください。
たとえばユーザー名として入力された文字列に "\" とか ">" が含まれていたら明らかにそんな名前のファイル・フォルダは作れませんし、文字としては問題なくても"com1" なんていうユーザー名にされるとやっぱりアウトです。

※オススメなのは、ファイル・フォルダ名は、"_(ユーザー名)" のようにユーザー名の前に何か問題のない文字列を付加した文字列にすることです。「使えない文字列」の方はそれでだいたい回避できます。


もし、すでにお分かりのコトでしたらすみません。



たこ

リンク

2009/5/27(Wed) 23:07:30|NO.25420

>> KAさん
すいません、説明不足でした。
日本人のくせに日本語が下手なもので、
簡単な動作原理の説明だけで済ませてしまいました。
以後気をつけます



ONION software Copyright 1997-2021(c) All rights reserved.