
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
社内Excel共有ブックでの保存ト...
-
Batch: フォルダ内の特定のファ...
-
事務の派遣で働いています。多...
-
excelを共有ファイルにすると行...
-
特定のエクセルファイルを起動...
-
拡張子が「cda」のファイルを聞...
-
月が変わったら自動でシートが...
-
VBAでCSVファイルが使用中かど...
-
共有フォルダに誰が何にアクセ...
-
access関数を説明できる方いま...
-
【アクセス】「ほかのユーザー...
-
Excel VBA 処理後データが重た...
-
特定のフォルダに入れたファイ...
-
iniファイル内の行を削除する方法
-
【VBA】異なる行だけを抜き出す...
-
大量のCSVデータを行列の変換を...
-
tmpファイル なぜできる?削除...
-
(Excelマクロ)datファイルをエ...
-
相手のPCにVBAからメッセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
共有フォルダに誰が何にアクセ...
-
excelを共有ファイルにすると行...
-
社内Excel共有ブックでの保存ト...
-
AccessVBAで作成したExcelファ...
-
事務の派遣で働いています。多...
-
VBAでCSVファイルが使用中かど...
-
拡張子が「cda」のファイルを聞...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
【VBA】異なる行だけを抜き出す...
-
【アクセス】「ほかのユーザー...
-
Excel VBA 処理後データが重た...
-
相手のPCにVBAからメッセ...
-
access関数を説明できる方いま...
-
XMLデータを変換し印刷する方法
-
WEBクエリが使えない場合のHPデ...
-
メールで送られてきたワードの...
おすすめ情報