;INI File I/O module ;このモジュールの扱いは「もうどうにでもしてください」。改良(改変)したものを配布するなども自由に行って結構です。 ;ただし、全く変更の加えていないものを『名前を変えただけ』で再配布するのは止めてください。 ;また、必須ではありませんが、オリジナルがあることと、オリジナルのダウンロード先を明記していただけると有難いです。 #module "ifiom" #uselib "kernel32.dll" #func GetPrivateProfileInt "GetPrivateProfileInt" sptr, sptr, sptr, sptr #func GetPrivateProfileString "GetPrivateProfileStringA" sptr, sptr, sptr, sptr, sptr, sptr #func WritePrivateProfileString "WritePrivateProfileStringA" sptr, sptr, sptr, sptr ; /// General /// #deffunc ini_set_file var path,int mode ;ini_set_file v1(lpFileName),p1(mode) ;引数:v1, p1<動作モード> ;返り値:成功=1 / 失敗=-1 / p1=1で、ファイルが無かったが、作成した=0 ;説明:使用するINIファイルを設定する。 ;補足:p1には動作モードを指定する。0を指定すると、ファイルがなかった場合に-1を返す。1を指定すると、ファイルを作って0を返す。なお、それに失敗した場合は-1が返る。 exist path if strsize == -1 { if mode == 0 { return -1 } else { temp="" bsave path,temp lpFileName == path return 0 } } lpFileName == path return 1 ; /// Read / Write /// ; // Read(Get) // #defcfunc ini_get_int str lpAppName, str lpKeyName, int nDefault ;--- 関数 --- ;ini_get_int(s1(lpKeyName), p1(nDefault)) ;引数:s1<セクション名>, s2<キー名>, p1 ;返り値:成功=s2の値 / 失敗=-1 / 値が負の数=0 ;説明:セクションs1(lpAppName)のキーs2(lpKeyName)の*整数*を取得する。 ;補足:値が"123abc"なら、この変数で返る値は"123"となる。 if (lpFileName == "") : return -1 GetPrivateProfileInt lpAppName, lpKeyName, nDefault, lpFileName return stat #deffunc ini_get_string str lpAppName, str lpKeyName, str lpDefault, var lpReturnedString_str, local nSize_str ;ini_get_string s1(lpAppName), s2(lpKeyName), s3(lpDefault), v1(lpReturnedString) ;引数:s1<セクション名>, s2<キー名>, s3<キーs1が存在しない場合のデフォルト値>, v1<結果が返るバッファ> ;返り値:成功=バッファに格納された文字数 / 失敗=-1 ;説明:セクションs1(lpAppName)の、キーs2(lpKeyName)の値を取得する。 ;補足:もし、lpAppNameがNULLの場合は、ini_set_fileによって指定されたINIファイル(lpFileName)内の全てのセクション名をバッファに返す。 ;補足:lpKeyNameにNULLが指定されると、ini_set_secによって指定されたセクション(lpAppName)内にある全てのキー名をNULL区切りでバッファに返す。 ; が、NULL区切りで返されるが故、NULL1つを変数の終端だと見なすHSPでは最初のセクション名しか取得できない。 if (lpFileName == "") : return -1 nSize_str == strlen(lpReturnedString_str) GetPrivateProfileString lpAppName, lpKeyName, lpDefault, varptr(lpReturnedString_str), varptr(nSize_str), lpFileName return stat #deffunc ini_write_string str lpAppName, str lpKeyName, var lpString ;ini_write_string s1(lpAppName), s2(lpKeyName), v1(lpString) ;引数:s1<セクション名> ,s2<キー名>, v1<書き込むべきデータを格納したバッファ> ;返り値:成功=0以外 / 失敗=-1 ;説明:セクションs1(lpAppName)に、キーs2(lpKeyName)とそれに対応する値・v1(lpString)を書き込む。 ;補足:Windows95では、先頭3つのパラメータをNULLにしてこれを実行することで、メモリ上にキャッシュされたWin.iniをフラッシュすることができる。(この命令のパラメータを全てNULL(=0)とする) ;   しかし、HSP3.0では、Windows95を動作対象外としているため、それを実行する意味は全くない。 if (lpFileName == "") : return -1 WritePrivateProfileString lpAppName, lpKeyName, lpString, lpFileName if stat == 0 : return -1 return stat #global