• ベストアンサー

INIファイルに一括書き込みを行う方法を教えて下さい。

Visual Basic6.0において INIファイルに一括書き込みを行う方法はないでしょうか。 「KEY_1」~「KEY_1000」に"-1"を書き込みたいのですが、 現状、 WritePrivateProfileString() を使用して、「KEY_〇」を1000回ループして書き込む方法しかわかりません。 「KEY_1」~「KEY_1000」に一括で"-1"を書き込む方がパフォーマンスの向上につながると思うのですが、何か名案はないでしょうか。 ご存知の方、教えて下さい。お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

WinAPIのWriteProfileSectionを使えばいいのでは ・・・ Private Declare Function WritePrivateProfileSection _   Lib "kernel32" Alias "WritePrivateProfileSectionA" _   (ByVal lpAppName As String, ByVal lpString As String, _   ByVal lpFileName As String) As Long といった具合でAPI宣言する 標準モジュールに宣言するなら Public Declareで宣言する dim s1(1 to 1000) as String, ss as String dim n as Integer for n = 1 to 1000   s1(n) = "Key_" & n & "=-1" next ss = Join( s1, Chr(0) ) WritePrivateProfileSection "Sample", ss, ".\myFile.ini" セクション内が 書き換えたいものだけなら上記でいいがほかのデータもあるのでしたら GetPrivateProfileSectionで元の内容を取得してから変更部分を書き換えて出力するようにしましょう Private Declare Function GetPrivateProfileSection _   Lib "kernel32" Alias "GetPrivateProfileSectionA" _   (ByVal lpAppName As String, ByVal lpReturnedString As String, _   ByVal nSize As Long, ByVal lpFileName As String) As Long といった具合なので dim ss as String ss = String( 4096, " " ) GetPrivateProfileSection "Sample", ss, Len(ss), ".\myFile.ini" といった具合にして 読み込む変数にあらかじめダミーのデータを設定してから呼び出しましょう

nori79
質問者

お礼

早速の回答、及び親切な説明をありがとうございます。 教えていただいた方法で試してみます。 WritePrivateProfileString()を1000回コールする方法では下記(1)~(3)を1000回実行することとなり、(1)と(3)の繰り返しが無駄と思いました。 (1).INIファイルオープン (2).「KEY_〇」書き込み (3).INIファイルクローズ(セーブ) WriteProfileSection()を使用することにより、 (1).INIファイルオープン (2).「KEY_1~KEY_1000」書き込み (3).INIファイルクローズ(セーブ) (1)~(3)を1回だけ実行していることとなり、処理時間の短縮に繋がるのではと思っています。

すると、全ての回答が全文表示されます。

関連するQ&A