
iniファイルの使い方自体を間違えているのかも知れませんが、
わからないので教えてください。
VB6でiniファイルを作成しています。
使用しているAPIは「WritePrivateProfileString」です。
iniファイルの内容が以下のようにあったとします。
これは上記のAPIで出力しています。
[a]
a1=xxxx
a2=yyyy
a3=zzzz
プログラムでiniファイルを読み込み、
画面上である操作をしたとして、iniファイルを更新します。
結果、以下のような内容にするには、どのようにしたらよいのでしょうか。
[a]
a1=xxxx
a2=zzzz
a1、a2を出力するところまではできるのですが、
a3の行を削除する方法がわかりません。
もしAPIでこの行を削除する方法がなければ、
iniファイルを削除して、再作成すればよいのだと思います。
その際には、iniファイルを削除するAPIがあるのでしょうか。
KillステートメントやOpenステートメントを使うのが一般的なのでしょうか。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpSectionName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
と宣言して、
lpString に NULL を渡すと、キーの削除になります。
NULL の渡し方は
WritePrivateProfileString(ByVal SectionName, ByVal KeyName, ByVal 0&, ByVal FileName)
のようにします。
同様に
WritePrivateProfileString(ByVal SectionName, ByVal 0&, ByVal 0&, ByVal FileName)
とすると、セクションの削除ができます。
この回答への補足
最初は行削除のつもりでしたが、
セクション毎の操作の方が都合がよいプログラムでしたので、
ANo.1のセクション毎の出力と合わせて、
セクション毎の削除を利用させていただきました。
ありがとうございました。
No.1
- 回答日時:
削除するためのAPIは存在しません
変わりにセクションデータを書き込むAPIを使用します
セクションデータを取得する GetPrivateProfileSectionでセクション内のキーとデータを取得します
これで取得したデータか必要ない部分を文字列操作で削除して
WrirePrivateProfileSectionで書き込みましょう
たとえば
dim ss as string
ss = String( 256, " ")
GetPrivateProfileSection "A", ss, 256, "sample.ini"
ss = Left(ss, InStr( ss,"A3")-1)
WritePrivateProfileSection "A", ss, "sample.ini"
といった具合です
この回答への補足
ご回答いただき、ありがとうございます。
セクション全体を読み書きできるんですね。
教えていただきましたコードでうまくできそうです。
[a]は簡単なセクション例だったのですが、
他の キー=データ を追加する場合は、
行(キーごと)の区切りに Chr(0) を使用すればよろしいのでしょうか。
取り込んだ文字列の区切り位置を Asc で確認するとそうだったのですが、
それよりも vbCrLf などの改行文字でした方がよいのでしょうか。
行区切りにはChr(0)を使用してうまくいけたような気がするので、
これでセッション毎の出力をするようにしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- ノートパソコン ソフトアンインストール残存ファイル 3 2022/09/13 18:15
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/10/03 09:55
- その他(ソフトウェア) 特定のpremiere proのファイルが開けなくなりました。 1 2022/11/16 12:31
- Photoshop(フォトショップ) アプリ「フォト」と編集したファイルの紐づけを切り離したい。 1 2023/08/01 16:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
社内Excel共有ブックでの保存ト...
-
Batch: フォルダ内の特定のファ...
-
特定のフォルダに入れたファイ...
-
シーケンシャルファイルのデー...
-
CSV出力
-
vbsでゴミ箱への移動
-
Excelの複数人での参照について
-
WEBクエリが使えない場合のHPデ...
-
特定のエクセルファイルを起動...
-
拡張子が「cda」のファイルを聞...
-
“~”のファイルについて
-
ファイル添付について
-
PHPでブログを作るのにDBを使...
-
ExcelVBAでの標準偏差の求め方
-
access関数を説明できる方いま...
-
ファイルの途中に文字列を挿入
-
月が変わったら自動でシートが...
-
相手のPCにVBAからメッセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
Batch: フォルダ内の特定のファ...
-
特定のエクセルファイルを起動...
-
VBAでCSVファイルが使用中かど...
-
社内Excel共有ブックでの保存ト...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
AccessVBAで作成したExcelファ...
-
事務の派遣で働いています。多...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
拡張子が「cda」のファイルを聞...
-
月が変わったら自動でシートが...
-
Excel VBA 処理後データが重た...
-
WEBクエリが使えない場合のHPデ...
-
access関数を説明できる方いま...
-
ファイルの途中に文字列を挿入
-
特定のフォルダに入れたファイ...
-
tmpファイル なぜできる?削除...
おすすめ情報