【HSP】書き込み・オープンできるかチェックする

ファイルを読み書きできるかチェックするモジュールです。bloadやbsaveなどでHSPエラー12を防ぐためにチェックするのに使えるかなぁと。

ファイルを読み書きできるかチェックするモジュールです。bloadやbsaveなどでHSPエラー12を防ぐためにチェックするのに使えるかなぁと。

#module _FileCheck_
#uselib "kernel32"
#cfunc _FC_CreateFile "CreateFileA" sptr,sptr,sptr,sptr,sptr,sptr,sptr
#cfunc _FC_GetLastError"GetLastError"
#func _FC_CloseHandle "CloseHandle" sptr
#define	GENERIC_READ 0x80000000
#define	GENERIC_WRITE 0x40000000
#define OPEN_EXISTING 0x00000003
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define INVALID_HANDLE_VALUE -1
#deffunc FileCheck str _fname
	fname = _fname 
	hFile = _FC_CreateFile(fname, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
	error = _FC_GetLastError()
	if hFile != INVALID_HANDLE_VALUE {
		_FC_CloseHandle hFile
	}
return error
#global

// stat の値は
// http://homepage3.nifty.com/aokura/tips/e000000.html
// を参考にしてください。

	FileCheck "test.txt"
	if stat == 0{
		mes "正常終了しました。"
	}else : if stat == 2 || stat == 3{
		mes "ファイルが見つかりません。"	
	}else : if stat == 4 || stat == 5{
		mes "ファイルを開くことができません。"
	}else : if stat == 32 || stat == 33{
		mes "ファイルを書き込むことができません。"
	}