2013-05-28 2 views
0

Добрый день люди -Чтение/запись INI ж/переменной Раздел Название

я работаю на чтение/запись внешний файл, который создается и управляется с помощью 3-й партии, которая использует .INI структурированные файлы в качестве языка сценариев , Однако у меня есть обертка, но имена разделов статичны с уникальным номером в конце ([GENERAL-1]), так что у вас одна и та же задача более одного раза. Я использую VB.NET w/VS2008.

Мой код ниже может успешно прочитать ключ из раздела, жестко закодированного, но я бы хотел, чтобы ключ был общим.

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) 

Уведомление Генерального 1 выше, если у меня есть значение жёстко, как -1 я могу прочитать INI-файл ввода без проблема. Любые мысли о том, как я могу получить и использовать значение слева от дефиса?

Любая помощь приветствуется!

--George

+0

это не работает? 'Dim section As String =" General " slength = GetPrivateProfileString (раздел &" -1 "," SUPPRESSTASKERRORS "," анонимный ", uname, 1024, OriginalMJB)' –

+0

Можете ли вы создать цикл для вызова General-1, General -2 и т. Д.? Вы можете вызвать Getprivate ... с NULLS в первых 1 или 2 параметрах, чтобы получить списки того, что присутствует. См. Документы MSDN. – rheitzman

+0

Вы хотите сказать, что хотите функцию, которую можно вызывать с разными значениями суффикса? –

ответ

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) 
+0

«Число» или значение после дефиса являются переменными, могут быть числовыми или альфа-символами. Попытка получить выражение влево/вправо для работы, поэтому я могу разобрать имя раздела и принимать значение только в дефис. –

+0

Я добавил несколько вариантов для просмотра – tinstaafl

Смежные вопросы