INIファイルへの書き込み


INI  2004-02-16 18:30:56  No: 82053

過去ログにてINIファイルの読み方について調べて、勉強おしたのですが、INIファイルの読込はAPIを使用してテキストを読み込むことはできたのですが、
INIファイルにテキストを書き込み、上書き保存するにはどうすればいいでしょうか?  再度オープンして、書き込む(上書きする)行を指定したり
するのでしょうか?  ご教授お願いします。


魔界の仮面弁士  2004-02-16 19:31:43  No: 82054

同一のキー名が複数回現れるような特殊なiniファイル(Wininit.iniなど)以外であれば、
WritePrivateProfileString APIを使って書きこむ事ができます。


INI  2004-02-16 22:18:48  No: 82055

魔界の仮面弁士様

ありがとうございます。
WritePrivateProfileStringをヘルプで調べて使ってみたんですけど、
書き込みできません。
同一のキー名はそんなに重複しないのですが、
INIファイルにて読込ファイルのファイルパスをフルパスで指定してあり、
初回はINIの指定フルパス位置のファイルを検索するのですが、
プログラム終了時にパスを変更設定した場合、(テキストボックスにて)
そのパスをINIファイルに保存し、次回はデフォルトで持つといった事が
したいのですが、この処理は不可能でしょうか?
ご教授お願いします。


nanashi  2004-02-17 01:03:40  No: 82056

> 同一のキー名はそんなに重複しないのですが、

↑意味わからないですね……(^^;

実際にどういう処理を書いているのか分かりませんが、そのようなことは可能です。
というか、ごく一般に用いられてる手法だと思います。
それが出来ない、ということはAPIの宣言か、またはどこかでミスをしてるからでしょう。
読込部分、書込部分、API宣言部分のソースを提示された方が回答しやすいですよ。


punto  2004-02-19 11:25:25  No: 82057

読み込みができたなら書き込みは簡単だろって。

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 だ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加