Visual Basic6.0において
INIファイルに一括書き込みを行う方法はないでしょうか。
「KEY_1」~「KEY_1000」に"-1"を書き込みたいのですが、
現状、
WritePrivateProfileString()
を使用して、「KEY_〇」を1000回ループして書き込む方法しかわかりません。
「KEY_1」~「KEY_1000」に一括で"-1"を書き込む方がパフォーマンスの向上につながると思うのですが、何か名案はないでしょうか。
ご存知の方、教えて下さい。お願い致します。
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"
といった具合にして 読み込む変数にあらかじめダミーのデータを設定してから呼び出しましょう
早速の回答、及び親切な説明をありがとうございます。
教えていただいた方法で試してみます。
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が見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら…
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
iniファイルに追記がしたいです。
Visual Basic(VBA)
-
iniファイル内の行を削除する方法
Visual Basic(VBA)
-
iniファイルへの追記について
Visual Basic(VBA)
-
-
4
VB2008 iniファイルの指定セクション内の値のみを取得
Visual Basic(VBA)
-
5
【VBS】 iniファイルの特定部分のみ変更
Visual Basic(VBA)
-
6
VBA ファイル一覧を取得して全てのINIファイルの中身をExcelシートに移す
Excel(エクセル)
-
7
バッチでiniファイルの編集
その他(プログラミング・Web制作)
-
8
処理負荷特定で考えられる要因について
C言語・C++・C#
-
9
バッチファイルで、iniファイルの内容を一部書き換える方法を教えてください。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DTOとEntityの差は何ですか。
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
CSVのインポート【ASP.NET】
-
Strutsで画面に表示した値の再...
-
MSFlexGridのデータを初期化し...
-
WordでExcelデータを差込...
-
GridViewからチェックボックス...
-
データを拾うときに文字化け?
-
西暦4桁に変換する方法
-
GPSのデータで緯度経度を示すデ...
-
Dosブロンプトでtabを出力したい
-
「取得先」という表現について
-
Yahoo! JAPAN IDを新規取得でき...
-
バッチファイルでpingの結果を...
-
URLのパラメータをGETのままで...
-
小数点以下0の非表示
-
switch()文で値の大小比較
-
VBS「開いているページ」のURL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DTOとEntityの差は何ですか。
-
wordの差し込み印刷で文字...
-
【C#】DataGridViewの最大列数...
-
excel access連携 このテーブル...
-
WordでExcelデータを差込...
-
VBA内でのGetPixelを使用した時...
-
ActiveReportのサブレポート機...
-
GridViewからチェックボックス...
-
MSFlexGridのデータを初期化し...
-
INIファイルに一括書き込みを行...
-
VB6.0とスプレッドシート
-
EXCEL VBAでのCSV出力について
-
TCPでデータを受け取ってそれを...
-
JavaからPHPへの値の受け渡し
-
PHP+SmartyとAjax
-
アクセス+VBA 最適化
-
「外部データの取り込み」とい...
-
ASP.NET GridView の検索画面で...
-
エクセルVBAで楽天証券に注...
-
OleDbDataReaderで単精度浮動小...
おすすめ情報