ページ 1 / 1
INIファイルの読み書き
Posted: 2008年3月28日(金) 14:36
by popopo(^^)
こんにちは。AB始めたばかりのpopopoという者です。
あるツールを作っているのですが、設定を保存するINIファイルの読み書き
の仕方がわかりません。
GetPrivateProfieStringとかいうAPIもあるようですが、
使い方がよくわかりません。
それとも、レジストリに保存した方がいいんでしょうか・・・・・
僕は、レジストリに保存するとアンインストールの時に
レジストリを消去しないといけないので、
できるだけINIファイルがいいのですが・・・。
だれか教えてください(_ _)
Re: INIファイルの読み書き
Posted: 2008年3月28日(金) 18:56
by 7
> こんにちは。AB始めたばかりのpopopoという者です。
こんにちは。なんか可愛らしいHNですね...(笑)
> GetPrivateProfieStringとかいうAPIもあるようですが、
> 使い方がよくわかりません。
iniファイルの文字列を操作する関数の定義 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (
ByVal lpAppName As LPCTSTR,
ByVal lpKeyName As LPCTSTR,
ByVal lpString As LPCTSTR,
ByVal lpFileName As LPCTSTR) As BOOL
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (
ByVal lpAppName As LPCTSTR,
ByVal lpKeyName As LPCTSTR,
ByVal lpDefault As LPCTSTR,
ByVal lpReturnedString As LPTSTR,
ByVal nSize As DWord,
ByVal lpFileName As LPCTSTR) As DWord
[MSDN]
WritePrivateProfileString
[MSDN]
GetPrivateProfileString
[VC++のクラスと関数に関するメモ]
iniファイルの作成
忙しいのでAB用のサンプルコードは、どなたか!
Posted: 2008年3月28日(金) 19:49
by konisi
INIファイルの操作はやったことがないのですが、こんな感じでよろしかったでしょうか?
コード: 全て選択
#console
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (lpAppName As *Byte,lpKeyName As *Byte,lpString As *Byte,lpFileName As *Byte) As BOOL
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (lpAppName As *Byte,lpKeyName As *Byte,lpDefault As *Byte,lpReturnedString As *Byte,nSize As DWord,lpFileName As *Byte) As DWord
Dim ret As Long
Dim DirAddr[MAX_PATH-1] As Byte
Dim FileAddr[MAX_PATH-1] As Byte
Dim buf[255] As Byte
Const INIFileName="1.ini"
'iniファイルへの絶対パスを作る
GetCurrentDirectory(MAX_PATH-1,DirAddr)
wsprintf(FileAddr,"%s\%s",DirAddr,INIFileName)
'書き込み
ret=WritePrivateProfileString("Section1","Test","読み込み成功",FileAddr)
If ret then Print "書き込み成功"
'読み込み
GetPrivateProfileString("Section1","Test","読み込み失敗",buf,255,FileAddr)
Print MakeStr(buf)
Sleep(-1)
Posted: 2008年3月28日(金) 22:11
by のぶあや
先日実践コードモジュールにiniファイルを操作するクラスを投稿したのでよければどうぞ
iniファイルクラス
http://www.activebasic.com/forum/viewtopic.php?t=2347
整数値・文字列の読み書き、改行コードを含む文字列の読み書き、キー・セクションの消去ができます
サンプルコード
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
'===== INIクラスのオブジェクトを生成
Dim ini As cPrivateProfileManager(0, 0, "")
'[第1引数] iniファイルのファイルパス(0指定で実行ファイルと同名のファイル)
'[第2引数] 存在しないキーを読み込もうとしたときのデフォルトの値(整数値)
'[第3引数] 存在しないキーを読み込もうとしたときのデフォルトの値(文字列)
'===== セクションオブジェクトの生成
Dim sec As *iProfileSection
Dim str As BytePtr, int As Long
sec = ini.CreateObject("section" /*セクション名*/ )
'===== セクションに対する処理
'指定したキーの値を文字列として読み込む
str = sec->GetStr("key" /*キー名*/)
'指定したキーの値を整数値として書き込む
sec->GetInt("key" /*キー名*/, int /*書き込む値*/)
'===== セクションオブジェクトの破棄
ini.DeleteObject(sec)