0

こんにちは皆さん -

.INI 構造化ファイルをスクリプト言語として使用するサード パーティによって作成および管理される外部ファイルの読み取り/書き込みに取り組んでいます。ラッパーはかなりうまく機能していますが、セクション名は静的で、最後に一意の番号 ([GENERAL-1]) が付いているため、同じタスクを複数回実行できます。VS2008 で VB.NET を使用しています。

以下のコードは、ハードコーディングされたセクションからキーを正常に読み取ることができますが、キーを汎用にしたいと考えています。

INI

test.ini
[GENERAL-1]
SUPPRESSTASKERRORS=Y
TASKERRORSENDJOB=Y

コード:

Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias    
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As  
String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As   
Long, ByVal lpFileName As String) As Long

Declare Function WriteProfileString Lib "kernel32.dll" Alias 
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As   
String, ByVal lpString As String, ByVal lpFileName As String) As Long



' Read INI file
    Dim uname As String ' receives the value read from the INI file
    Dim slength As Long ' receives length of the returned string
    Dim OriginalMJB As String = "c:\test\test.ini"
    uname = Space(1024)

slength = GetPrivateProfileString("General-1", "SUPPRESSTASKERRORS", "anonymous", 
uname, 1024, OriginalMJB)

上記の General-1 に注目してください。値が -1 としてハードコーディングされている場合、問題なく入力 .ini ファイルを読み取ることができます。ハイフンの残りの値を取得して使用する方法について何か考えはありますか?

どんな助けでも大歓迎です!

--ジョージ

4

1 に答える 1

1

これが1つの方法です。ここから、必要な特定のセクションと同じ SectionNo を作成できるはずです。

Dim section As String = "General"
Dim SectionNo as String = "-"
Dim Number as Integer = 1
SectionNo += Number.ToString
slength = GetPrivateProfileString(section + SectionNo, "SUPPRESSTASKERRORS", "anonymous", uname, 1024, OriginalMJB)

ここにいくつかのオプションがあります

    Dim SectionName As String = "General-1"
    Dim SectionCategorie As String = ""
    Dim Section As String = ""

    'Using Split - It returns an array so you can load the results into an array   
    'or just call it and load the specific index each time.
    SectionCategorie = Split(SectionName, "-")(0)
    Section = Split(SectionName, "-")(1)

    'Using Substring

    SectionCategorie = SectionName.Substring(0, SectionName.IndexOf("-"))
    Section = SectionName.Substring(SectionName.IndexOf("-") + 1)
于 2013-05-29T06:31:20.580 に答える