〜 ファイル 〜
ファイル名の禁則文字チェック

フォルダの区切りを示す「」や「」、検索時のワイルドカードを示す「」や「」等は、
個々に「何かしらの意味で特別に使われているので通常文字として使われては困る」理由があるため、
ファイル名としての使用を禁止されており、そのような文字をファイル名の禁則文字と呼びます。
Windowsでは「¥/:*?”<>|」とタブの9種類(全て半角のみ)がファイル名の禁則文字です。
dialog命令によるファイルオープン・クローズでは自動的に禁則文字チェックをしてくれますが、
dialog命令によるコモンダイアログを使用せずにエディットボックスで入力されたファイル名を
bsave命令等で保存すると、最終的には保存ができないので致命的な問題ではないといえばないものの、
どうして正常に保存ができなかったのか利用者にはわからない可能性があります。
こういう場合に、事前にファイル名の禁則文字チェックを掛けて、
保存処理に移る前に「ファイル名に使用できない文字が含まれている」ことを教えてあげれば親切ですよね。
保存前に下記のようなチェック処理を設けてあげましょう。
尚、下記のチェックでは、空文字指定もファイル名として問題ということで、チェック対象にしています。
	

istaboo ファイル名
ファイル名チェック対象テキストまたはを文字列型変数を指定する。
ファイル名としてふさわしくない場合は1が、問題ない場合は0がstatに返る。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#module
#deffunc istaboo str
	mref file, 32
	mref stt, 64
	stt = 1
	if file = "" : return
	sdim s, 2, 9
	s = "\\", "/", ":", "*", "?", "\"", "<", ">", "|, "\t"
	repeat 9
		instr i, file, s.cnt
		if i >= 0 {
			break
		}
	loop
	if i = -1 : stt = 0
	return
#global

	sdim f, 256
	f = "hspbc-ultimate/satoshi"
	pos  10, 10 : mes "ファイル名"
	pos 100, 10 : input f, 180, 20
	pos 300, 10 : button "保存", *save
	stop

*save
	istaboo f
	if stat {
		dialog "ファイル名が不正です。\n※「\\/:*?\"<>|」とタブ記号は使用できません。", 1
	} else {
		dialog "保存しました。"
	}
	stop

結果 = istaboo(ファイル名)
結果ファイル名としてふさわしくない場合は1が、問題ない場合は0が返る。
ファイル名チェック対象テキストまたはを文字列型変数を指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#module
#defcfunc istaboo var file, local i, local s
	if file = "" : return 1
	s = "\\", "/", ":", "*", "?", "\"", "<", ">", "|", "\t"
	foreach s
		if instr(file, , s.cnt) >= 0 {
			i = 1
			break
		}
	loop
	return i
#global

	sdim f, 256
	f = "hspbc-ultimate/satoshi"
	pos  10, 10 : mes "ファイル名"
	pos 100, 10 : input f, 180, 20
	pos 300, 10 : button gosub "保存", *save
	stop

*save
	if istaboo(f) {
		dialog "ファイル名が不正です。\n※「\\/:*?\"<>|」とタブ記号は使用できません。", 1
	} else {
		dialog "保存しました。"
	}
	return