〜 ファイル 〜
指定パスがファイルかフォルダかをチェック

通常、ファイルが存在するかをチェックするときはexist命令を使用しますが、
exist命令はファイルの存在チェックだけで、同名フォルダが存在しても「−1」を返します。
フォルダ内ファイル一覧を取得するdirlist命令を利用することでファイル・フォルダの存在を確認できるので
ココではexist命令に似た形式のモジュール命令を参考に載せておきます。
exist命令同様に存在するファイルパスならばそのサイズを、存在しないパスならば−1を、
そしてパスがフォルダであったならば−2を返す仕様としていますので、
HSP2では通常の命令として使用してstatからサイズを取得して判断する、
HSP3からは関数としてそのまま対象パスのサイズを受け取って判断してください。
	

exist2 ファイルパス
ファイルパスファイルまたはフォルダのパスを指定する。
結果はシステム変数statに、存在しないなら−1、フォルダなら−2、ファイルならファイルサイズが返る。

 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
#module
#deffunc exist2 str
	mref file, 32
	mref stt, 64
	exist file
	if strsize ! -1 {
		stt = strsize
	} else {
		dirlist s, file, 5
		stt = (stat = 1) * -1 -1
	}
	return
#global

	sdim f, 8, 3
	f = "obj", "docs", "hspbc"
	repeat 3
		exist2 exedir + "\\" + f.cnt
		if stat = -2 {
			mes "[" + f.cnt + "]はフォルダです"
		} else {
			if stat = -1 {
				mes "[" + f.cnt + "]は存在しません"
			} else {
				mes "[" + f.cnt + "]は" + stat + "バイトのファイルです"
			}
		}
	loop
	stop

結果 = exist2(ファイルパス)
結果存在しないなら−1、フォルダなら−2、ファイルならファイルサイズが返る。
ファイルパスファイルまたはフォルダのパスを指定する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#module
#defcfunc exist2 str file, local s
	exist file
	if strsize ! -1 : return strsize
	dirlist s, file, 5
	return (stat = 1) * -1 -1
#global

	f = "obj", "docs", "hspbc"
	repeat 3
		size = exist2(dir_exe + "\\" + f.cnt)
		if size = -2 {
			mes "[" + f.cnt + "]はフォルダです"
		} else {
			if size = -1 {
				mes "[" + f.cnt + "]は存在しません"
			} else {
				mes "[" + f.cnt + "]は" + size + "バイトのファイルです"
			}
		}
	loop