• 締切済み

iniファイルの全セクションを取得し、ListBoxのitemにするには?VB2008

こんにちは。VB2008を使用しています。 「Formロード時にiniファイルの全セクションを取得し、セクション1つずつをlistboxの項目にする」 という流れのコードを作成したいのですが、うまくいきません。 似たような質問などを調べてつぎはぎしてみたものの、うまく理解できなく困っています。 以下、現在記述中のコードです。 'APIの宣言 Declare Function GetPrivateProfileSectionNames Lib "Kernel32.dll" _ Alias "GetPrivateProfileSectionNamesA" _ (ByVal lpszReturnBuffer As string, ByVal nSize As Integer, _ ByVal lpFileName As String) As String 'form1ロード時 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim listboxsec As String Dim listboxitem() As String listboxsec.Capacity = 256 GetPrivateProfileSectionNames(listboxsec, 256, "./FileTest.ini") listboxitem = Split(listboxsec, "\") End Sub 最初の全セクションの取得方法がイマイチ分からない状況です。iniファイルは実行プログラムと同じ場所においてあります。 取得したセクションをSplitで配列に分け、for文でlistboxに追加していこうかと考えています。 どのような記述をすればいいのか、ご教示お願いいたします。

みんなの回答

回答No.1

“VB GetPrivateProfileSectionNames”で検索してないのでしょうか? Declare 文も違っているようです。 ◎VB.NETの場合 Declare Function GetPrivateProfileSectionNames lib "Kernel32.dll" _ Alias "GetPrivateProfileSectionNamesA" _ (ByVal lpszReturnBuffer As String, ByVal nSize As Integer, _ ByVal lpFileName As String) As Integer ◎MSDNの説明 ・パラメータ lpszReturnBuffer このバッファに、指定した .ini ファイル内に存在するすべてのセクション名が格納されます。 セクション名とセクション名の間に NULL が挿入されます。 その結果、このバッファには、NULL で終わる文字列が 1 つまたは複数格納されます。 バッファの最後には、もう 1 つの NULL が挿入されます。 nSize lpszReturnBuffer パラメータが指すバッファのサイズを、TCHAR 単位で指定します。 lpFileName .ini ファイルの名前を指定します。 ・戻り値 バッファに格納された文字数が返ります(最後の 1 つの NULL を除く)。 バッファのサイズが不足した場合、nSize-2 の値が返ります。 ◎注意点 APIは文字列の領域確保はしないので、APIに渡す文字変数には十分な大きさを持たせること。 listboxsec = Space(1024) とかにしておく。 セクション名の区切りは NULL (=Chr(0))。

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

関連するQ&A