プロが教えるわが家の防犯対策術!

Visual Basic6.0において
INIファイルに一括書き込みを行う方法はないでしょうか。

「KEY_1」~「KEY_1000」に"-1"を書き込みたいのですが、
現状、
WritePrivateProfileString()
を使用して、「KEY_〇」を1000回ループして書き込む方法しかわかりません。

「KEY_1」~「KEY_1000」に一括で"-1"を書き込む方がパフォーマンスの向上につながると思うのですが、何か名案はないでしょうか。
ご存知の方、教えて下さい。お願い致します。

A 回答 (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"
といった具合にして 読み込む変数にあらかじめダミーのデータを設定してから呼び出しましょう
    • good
    • 0
この回答へのお礼

早速の回答、及び親切な説明をありがとうございます。
教えていただいた方法で試してみます。
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回だけ実行していることとなり、処理時間の短縮に繋がるのではと思っています。

お礼日時:2009/09/11 15:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています