過去ログにてINIファイルの読み方について調べて、勉強おしたのですが、INIファイルの読込はAPIを使用してテキストを読み込むことはできたのですが、
INIファイルにテキストを書き込み、上書き保存するにはどうすればいいでしょうか? 再度オープンして、書き込む(上書きする)行を指定したり
するのでしょうか? ご教授お願いします。
同一のキー名が複数回現れるような特殊なiniファイル(Wininit.iniなど)以外であれば、
WritePrivateProfileString APIを使って書きこむ事ができます。
魔界の仮面弁士様
ありがとうございます。
WritePrivateProfileStringをヘルプで調べて使ってみたんですけど、
書き込みできません。
同一のキー名はそんなに重複しないのですが、
INIファイルにて読込ファイルのファイルパスをフルパスで指定してあり、
初回はINIの指定フルパス位置のファイルを検索するのですが、
プログラム終了時にパスを変更設定した場合、(テキストボックスにて)
そのパスをINIファイルに保存し、次回はデフォルトで持つといった事が
したいのですが、この処理は不可能でしょうか?
ご教授お願いします。
> 同一のキー名はそんなに重複しないのですが、
↑意味わからないですね……(^^;
実際にどういう処理を書いているのか分かりませんが、そのようなことは可能です。
というか、ごく一般に用いられてる手法だと思います。
それが出来ない、ということはAPIの宣言か、またはどこかでミスをしてるからでしょう。
読込部分、書込部分、API宣言部分のソースを提示された方が回答しやすいですよ。
読み込みができたなら書き込みは簡単だろって。
Public Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" _
(ByVal lpSection As String, _
ByVal lpEntry As String, _
ByVal lpValue As String, _
ByVal lpFileName As String) As Long
Public Sub SaveWindowPos(frm As Form)
Dim sFileName
Dim sSection
sFileName = App.Path
If Right(sFileName, 1) <> "\" Then sFileName = sFileName & "\"
sFileName = sFileName & App.EXEName & ".ini"
sSection = "WindowPosition"
WritePrivateProfileString sSection, "Left", CStr(frm.Left), sFileName
WritePrivateProfileString sSection, "Top", CStr(frm.Top), sFileName
End Sub
sFileName は full path じゃないと駄目だったようなきがするぞ。
さもなきゃ間違いなく単純な記述 miss だ。
ツイート | ![]() |