pathgetchartypeのタグがつけられたコード一覧

HSP 【HSP3】ファイル名、ディレクトリ名として使える名前かチェックするモジュール

#module _FileNameCheck_
#uselib "Shlwapi.dll"
#func PathGetCharTypeA "PathGetCharTypeA" int
#func PathGetCharTypeW "PathGetCharTypeW" int
#define GCT_INVALID 0	// この文字はパスに使用できない。
#define GCT_LFNCHAR 1	// この文字は長い形式のファイル名に使用することができる。
#define GCT_SHORTCHAR 2	// この文字は短い形式のファイル名に使用することができる。
#define GCT_WILD 4		// この文字はワイルドカード文字である。
#define GCT_SEPARATOR 8	// この文字はパスの区切りの文字である。

#defcfunc IsFileNamePath str _buftext
	buftext = _buftext
	sdim u_text, strlen(buftext)*2+2
	cnvstow u_text, buftext
	r = 0
	repeat
		if wpeek(u_text, cnt*2) == 0 : break
		PathGetCharTypeW wpeek(u_text, cnt*2)
		if stat == 0 | stat == 4 | stat == 8 : r = -1 : break
	loop
return r
#defcfunc IsDirNamePath str _buftext
	buftext = _buftext
	sdim u_text, strlen(buftext)*2+2
	cnvstow u_text, buftext
	r = 0
	repeat
		if wpeek(u_text, cnt*2) == 0 : break
		PathGetCharTypeW wpeek(u_text, cnt*2)
		if stat == 0 | stat == 4 : r = -1 : break
	loop
return r
#global

	// 使えない文字だと -1 が返ります

	mes IsFileNamePath("text.txt")		; 問題ないファイル名なのでOK
	mes IsDirNamePath("C:\\test.txt")	; 問題ないディレクトリ名なのでOK

	mes IsFileNamePath("C:\\test.txt")	; ファイル名としては\は使えないのでNG
	mes IsDirNamePath("C:\\test.txt")	; ディレクトリ名ならOK

	mes IsFileNamePath("test?.txt")		; ?は使えないのでNG
	mes IsDirNamePath("C:\\test?.txt")	; ?は使えないのでNG

よく投稿されているコード

タグ

最近投稿されたコード