Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 | 2 |

 

  Вопрос: Данные в текстовом файле Добавлено: 21.10.08 23:36  

Автор вопроса:  Marki
Приветствую!
Необходимо сделать текстовый файлик с настройками (*.ini)
привемрно такого формата:
[Группа1]
Параметр1=блаблабла
параметр2=труляля
параметр3=гыгыгы

[Группа2]
Параметр1=ухтыухтыухты
параметр2=воттаквот
параметр3=простопараметр
параметр4=итакоебывает

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

Значения могут быть разные по своему составу, длине и т.д.
Используется VB 2008 EE.

Спасибо.

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #1
Добавлено: 21.10.08 23:47
за АПИ, работающие с ини и держись, в чом проблема то.
GetPrivateProfileString
WritePrivateProfileString

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 21.10.08 23:59
Забей на INI, все давно на XML... Анахронисты, блин...

Ответить

Номер ответа: 3
Автор ответа:
 Шпион



ICQ: 250543104 

Вопросов: 13
Ответов: 118
 Профиль | | #3 Добавлено: 22.10.08 07:19
Filesystemobject
OpenTextFile
ReadLine

гонишь данные в массив, по необходимости переписываешь файл

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 22.10.08 08:32
Анахронисты, блин...

+1

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 22.10.08 08:34
Ну а если уж очень хочется работать с INI, то такой парсер(оболочка) пишется в течении 30 минут с двумя перерывами на перекур

Ответить

Номер ответа: 6
Автор ответа:
 Marki



Вопросов: 42
Ответов: 94
 Профиль | | #6 Добавлено: 22.10.08 12:01
Существует файл, используемый ДАВНО написанной (и не мной) программой.
Она имеет файл указанного формата - формат УЖЕ ВЫБРАН, и необходимо прочитать настройки той самой программы.

Вопрос не содержал "как записать", вопрос был "КАК ПРОЧИТАТЬ".
Спрошено - значит надо, и расчитываю на помощь в вариантах реализации, а не на калькуляцию потребного рабочего времени.

Спасибо всем откликнувшимся, бум ковыряться дальше.

Ответить

Номер ответа: 7
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #7
Добавлено: 22.10.08 14:49
  1. Option Explicit
  2. Option Compare Text
  3.  
  4. '********************************************************************
  5. '*            Написано 12.03.2004 году (Team HomeWork)              *
  6. '*                   e-mail: sne_pro@mail.ru                        *
  7. '********************************************************************
  8. '*                                                                  *
  9. '*    Работа с ini файлами, аналогичная работе с реестром Windows   *
  10. '*                                                                  *
  11. '********************************************************************
  12.  
  13. Private Declare Function GetPrivateProfileInt Lib "kernel32.dll" Alias "GetPrivateProfileIntA" (ByVal strSection As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
  14. Private Declare Function GetPrivateProfileSection Lib "kernel32.dll" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  15. Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  16. Private Declare Function GetPrivateProfileString Lib "kernel32.dll" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
  17. 'Private Declare Function GetPrivateProfileStruct Lib "kernel32.dll" Alias "GetPrivateProfileStructA" (ByVal lpszSection As String, ByVal lpszKey As String, lpStruct As Any, ByVal uSizeStruct As Long, ByVal szFile As String) As Long
  18.  
  19. Private Declare Function WritePrivateProfileSection Lib "kernel32.dll" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
  20. Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
  21. 'Private Declare Function WritePrivateProfileStruct Lib "kernel32.dll" Alias "WritePrivateProfileStructA" (ByVal lpszSection As String, ByVal lpszKey As String, lpStruct As Any, ByVal uSizeStruct As Long, ByVal szFile As String) As Long
  22.  
  23. Private Declare Function WPPStrToDelKey Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal strSection As String, ByVal lpKeyName As String, ByVal lpString As Long, ByVal lplFileName As String) As Long
  24. Private Declare Function WPPSToDelSec Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal strSection As String, ByVal lpKeyName As Long, ByVal lpString As Long, ByVal lplFileName As String) As Long
  25.  
  26. Private Declare Function DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
  27.  
  28. Public Type gbHWIniExRetData
  29.     sKeyName As String
  30.     sValue   As String
  31. End Type
  32.  
  33. '--------------------------------------------------------------------------------
  34. ' Проект     :  OfflineClient
  35. ' Процедура  :  SetValue
  36. ' Описание   :  Установка строкового значения
  37. ' Кем создан :  SNE
  38. ' Дата-Время :  08.11.2004-17:44:28
  39. '
  40. ' Параметры  :  sFileName   - Имя ИНИ файла
  41. '               sSectName   - Имя секции
  42. '               sKeyName    - Имя ключа
  43. '               sValue      - Значение
  44. '--------------------------------------------------------------------------------
  45. Public Sub SetValue(ByVal sFileName As String, _
  46.                     ByVal sSectName As String, _
  47.                     ByVal sKeyName As String, _
  48.                     ByVal sValue As String)
  49.  
  50.     Call WritePrivateProfileString(VerDblSlash(sSectName, False), sKeyName, sValue, sFileName)
  51. End Sub
  52.  
  53. '--------------------------------------------------------------------------------
  54. ' Проект     :  OfflineClient
  55. ' Процедура  :  SetDWord
  56. ' Описание   :  Установка численного значения
  57. ' Кем создан :  SNE
  58. ' Дата-Время :  08.11.2004-17:44:28
  59. '
  60. ' Параметры  :  sFileName   - Имя ИНИ файла
  61. '               sSectName   - Имя секции
  62. '               sKeyName    - Имя ключа
  63. '               lValue      - Значение
  64. '--------------------------------------------------------------------------------
  65. Public Sub SetDWord(ByVal sFileName As String, _
  66.                     ByVal sSectName As String, _
  67.                     ByVal sKeyName As String, _
  68.                     ByVal lValue As Long)
  69.  
  70.     Call WritePrivateProfileString(VerDblSlash(sSectName, False), sKeyName, Str$(lValue), sFileName)
  71. End Sub
  72.  
  73. '--------------------------------------------------------------------------------
  74. ' Проект     :  OfflineClient
  75. ' Процедура  :  SetKey
  76. ' Описание   :  Создание пустой секции
  77. ' Кем создан :  SNE
  78. ' Дата-Время :  08.11.2004-17:44:28
  79. '
  80. ' Параметры  :  sFileName   - Имя ИНИ файла
  81. '               sSectName   - Имя секции
  82. '--------------------------------------------------------------------------------
  83. Public Sub SetKey(ByVal sFileName As String, _
  84.                   ByVal sSectName As String)
  85.  
  86.     Call WritePrivateProfileSection(VerDblSlash(sSectName, False), "", sFileName)
  87. End Sub
  88.  
  89. '--------------------------------------------------------------------------------
  90. ' Проект     :  OfflineClient
  91. ' Процедура  :  GetValue
  92. ' Описание   :  Получение строкового значения
  93. ' Кем создан :  SNE
  94. ' Дата-Время :  08.11.2004-17:44:28
  95. '
  96. ' Параметры  :  sFileName   - Имя ИНИ файла
  97. '               sSectName   - Имя секции
  98. '               sKeyName    - Имя ключа
  99. '               sDefault    - Значение по умолчанию
  100. '               lMaxSize    - Максимальная длинна строки
  101. '--------------------------------------------------------------------------------
  102. Public Function GetValue(ByVal sFileName As String, _
  103.                          ByVal sSectName As String, _
  104.                          ByVal sKeyName As String, _
  105.                 Optional ByVal sDefault As String = vbNullString, _
  106.                 Optional ByVal lMaxSize As Long = &H400&) As String
  107.     Dim slength As Long
  108.  
  109.     GetValue = String$(lMaxSize, &H0)
  110.     slength = GetPrivateProfileString(VerDblSlash(sSectName, False), sKeyName, sDefault, GetValue, lMaxSize, sFileName)
  111.     GetValue = Left$(GetValue, slength)
  112. End Function
  113.  
  114. '--------------------------------------------------------------------------------
  115. ' Проект     :  OfflineClient
  116. ' Процедура  :  GetDword
  117. ' Описание   :  Получение числового значения
  118. ' Кем создан :  SNE
  119. ' Дата-Время :  08.11.2004-17:44:28
  120. '
  121. ' Параметры  :  sFileName   - Имя ИНИ файла
  122. '               sSectName   - Имя секции
  123. '               sKeyName    - Имя ключа
  124. '               lDefault    - Значение по умолчанию
  125. '--------------------------------------------------------------------------------
  126. Public Function GetDword(ByVal sFileName As String, _
  127.                          ByVal sSectName As String, _
  128.                          ByVal sKeyName As String, _
  129.                 Optional ByVal lDefault As Long = 0&) As Long
  130.  
  131.     GetDword = GetPrivateProfileInt(VerDblSlash(sSectName, False), sKeyName, lDefault, sFileName)
  132. End Function
  133.  
  134. '--------------------------------------------------------------------------------
  135. ' Проект     :  OfflineClient
  136. ' Процедура  :  GetKeys
  137. ' Описание   :  Получение секций (подсекций секции)
  138. ' Кем создан :  SNE
  139. ' Дата-Время :  08.11.2004-17:44:28
  140. '
  141. ' Параметры  :  sFileName       - Имя ИНИ файла
  142. '               sSectName       - Имя секции
  143. '               strRetArray()   - Массив для возврата значений
  144. '               lMaxSize        - Максимальный размер
  145. '--------------------------------------------------------------------------------
  146. Public Function GetKeys(ByVal sFileName As String, _
  147.                         ByVal sSectName As String, _
  148.                         ByRef strRetArray() As String, _
  149.                Optional ByVal lMaxSize As Long = &H1000&) As Long
  150.  
  151.     Dim sBuffer As String, tArray() As String, ii As Long, lLen As Long, lSl As Long
  152.  
  153.     sBuffer = String$(lMaxSize, &H0)
  154.     Erase strRetArray
  155.  
  156.     GetKeys = GetPrivateProfileSectionNames(sBuffer, lMaxSize, sFileName)
  157.  
  158.     If Not GetKeys > vbNull Then GetKeys = &HFFFF: Exit Function
  159.  
  160.     sBuffer = Left$(sBuffer, GetKeys - vbNull)
  161.     tArray = Split(sBuffer, vbNullChar)
  162.  
  163.     sSectName = VerDblSlash(sSectName, True)
  164.     lLen = Len(sSectName)
  165.  
  166.     If lLen = 0& Then
  167.         strRetArray = tArray
  168.         GetKeys = UBound(tArray)
  169.     Else
  170.         GetKeys = &HFFFF
  171.  
  172.         For ii = 0 To UBound(tArray)
  173.             If sSectName = Left$(tArray(ii), lLen) Then
  174.                 lSl = InStr(lLen + 2, tArray(ii), "\")
  175.  
  176.                 If lSl = 0 Or lSl = Len(tArray(ii)) Then
  177.                     GetKeys = GetKeys + vbNull
  178.                     ReDim Preserve strRetArray(GetKeys)
  179.  
  180.                     strRetArray(GetKeys) = Mid$(tArray(ii), lLen + vbNull)
  181.                 End If
  182.             End If
  183.         Next
  184.     End If
  185.  
  186.     Erase tArray
  187. End Function
  188.  
  189. '--------------------------------------------------------------------------------
  190. ' Проект     :  OfflineClient
  191. ' Процедура  :  GetKeyValues
  192. ' Описание   :  Получение имен и значений ключей в секции
  193. ' Кем создан :  SNE
  194. ' Дата-Время :  08.11.2004-17:44:28
  195. '
  196. ' Параметры  :  sFileName       - Имя ИНИ файла
  197. '               sSectName       - Имя секции
  198. '               strRetArray()   - Массив для возврата значений
  199. '               lMaxSize        - Максимальный размер
  200. '--------------------------------------------------------------------------------
  201. Public Function GetKeyValues(ByVal sFileName As String, _
  202.                              ByVal sSectName As String, _
  203.                              ByRef strRetArray() As gbHWIniExRetData, _
  204.                     Optional ByVal lMaxSize As Long = &H1000&) As Long
  205.  
  206.     Dim sBuffer As String, tArray() As String, ii As Long
  207.  
  208.     sBuffer = String$(lMaxSize, &H0)
  209.     Erase strRetArray
  210.  
  211.     GetKeyValues = GetPrivateProfileSection(VerDblSlash(sSectName, False), sBuffer, lMaxSize, sFileName)
  212.  
  213.     If Not GetKeyValues > 1& Then GetKeyValues = &HFFFF: Exit Function
  214.  
  215.     sBuffer = Left$(sBuffer, GetKeyValues - vbNull)
  216.     tArray = Split(sBuffer, vbNullChar)
  217.  
  218.     ReDim strRetArray(UBound(tArray))
  219.     For ii = 0 To UBound(tArray)
  220.         strRetArray(ii).sKeyName = Split(tArray(ii), "=")(0)
  221.         strRetArray(ii).sValue = Split(tArray(ii), "=")(1)
  222.     Next
  223.  
  224.     Erase tArray
  225.     GetKeyValues = UBound(strRetArray)
  226. End Function
  227.  
  228. '--------------------------------------------------------------------------------
  229. ' Проект     :  OfflineClient
  230. ' Процедура  :  DeleteValue
  231. ' Описание   :  Удаление ключа в секции
  232. ' Кем создан :  SNE
  233. ' Дата-Время :  08.11.2004-17:44:28
  234. '
  235. ' Параметры  :  sFileName   - Имя ИНИ файла
  236. '               sSectName   - Имя секции
  237. '               sKeyName    - Имя ключа
  238. '--------------------------------------------------------------------------------
  239. Public Sub DeleteValue(ByVal sFileName As String, _
  240.                        ByVal sSectName As String, _
  241.                        ByVal sKeyName As String)
  242.  
  243.     Call WPPStrToDelKey(VerDblSlash(sSectName, False), sKeyName, 0&, sFileName)
  244. End Sub
  245.  
  246. '--------------------------------------------------------------------------------
  247. ' Проект     :  OfflineClient
  248. ' Процедура  :  DeleteKey
  249. ' Описание   :  Удаление одной секции, независимо от того содержатся ли в ней подсекции
  250. ' Кем создан :  SNE
  251. ' Дата-Время :  08.11.2004-17:44:28
  252. '
  253. ' Параметры  :  sFileName   - Имя ИНИ файла
  254. '               sSectName   - Имя секции
  255. '               bWthSubKeys - Удалять-ли подсекции
  256. '--------------------------------------------------------------------------------
  257. Public Sub DeleteKey(ByVal sFileName As String, _
  258.                      ByVal sSectName As String, _
  259.             Optional ByVal bWthSubKeys As Boolean = True)
  260.     Dim SubKeys() As String, i_r As Long
  261.  
  262.     If bWthSubKeys Then
  263.         For i_r = 0 To GetKeys(sFileName, sSectName, SubKeys)
  264.             Call WPPSToDelSec(VerDblSlash(SubKeys(i_r), False), 0&, 0&, sFileName)
  265.         Next
  266.     End If
  267.  
  268.     Call WPPSToDelSec(VerDblSlash(sSectName, False), 0&, 0&, sFileName)
  269. End Sub
  270.  
  271. '--------------------------------------------------------------------------------
  272. ' Проект     :  OfflineClient
  273. ' Процедура  :  CopyKeyValues
  274. ' Описание   :  Запись ключей и их значений в секции
  275. ' Кем создан :  SNE
  276. ' Дата-Время :  08.11.2004-17:44:28
  277. '
  278. ' Параметры  :  sFileName       - Имя ИНИ файла
  279. '               sFromSection    - Имя секции с которой копируем
  280. '               sToSection      - Имя секции в которую копируем
  281. '               lMaxSize        - Максимальный размер данных
  282. '--------------------------------------------------------------------------------
  283. Public Sub CopyKeyValues(ByVal sFileName As String, _
  284.                          ByVal sFromSection As String, _
  285.                          ByVal sToSection As String, _
  286.                 Optional ByVal lMaxSize As Long = &H1000&)
  287.     Dim lLen As Long, sBuffer As String
  288.  
  289.     sBuffer = sBuffer = String$(lMaxSize, &H0)
  290.     lLen = GetPrivateProfileSection(VerDblSlash(sFromSection, False), sBuffer, lMaxSize, sFileName)
  291.  
  292.     If Not lLen > 1& Then Exit Sub
  293.     sBuffer = Left$(sBuffer, lLen)
  294.  
  295.     Call WritePrivateProfileSection(sToSection, sBuffer, sFileName)
  296. End Sub
  297.  
  298. ' §§§§§§§§§§§§§§§§§§§§§§§§§§ Пара функций без АПИ, но очень нужных в работе §§§§§§§§§§§§§§§§§§§§§§§§§§
  299.  
  300. '--------------------------------------------------------------------------------
  301. ' Проект     :  OfflineClient
  302. ' Процедура  :  RenameKey
  303. ' Описание   :  Переименование секции
  304. ' Кем создан :  SNE
  305. ' Дата-Время :  08.11.2004-17:44:28
  306. '
  307. ' Параметры  :  sFileName   - Имя ИНИ файла
  308. '               sSectName   - Имя секции
  309. '               sNewSName   - Новое имя секции
  310. '--------------------------------------------------------------------------------
  311. Public Sub RenameKey(ByVal sFileName As String, _
  312.                      ByVal sSectName As String, _
  313.                      ByVal sNewSName As String)
  314.     Dim nf As Long, sBuffer As String, slArray() As String
  315.     nf = FreeFile
  316.  
  317.     If FileLen(sFileName) = 0& Then Exit Sub
  318.  
  319.     Open sFileName For Binary Access Read Lock Write As nf
  320.         sBuffer = String$(LOF(nf), 0&)
  321.         Get nf, 1, sBuffer
  322.     Close nf
  323.  
  324.     slArray = Split(sBuffer, vbCrLf)
  325.     For nf = 0 To UBound(slArray)
  326.         If slArray(nf) = Chr$(&H5B) & sSectName & Chr$(&H5D) Then slArray(nf) = Chr$(&H5B) & sNewSName & Chr$(&H5D)
  327.     Next
  328.     sBuffer = Join(slArray, vbCrLf)
  329.  
  330.     nf = FreeFile
  331.     Open sFileName For Binary Access Write Lock Read As nf
  332.         Put nf, 1, sBuffer
  333.     Close nf
  334.  
  335.     Erase slArray
  336. End Sub
  337.  
  338. '--------------------------------------------------------------------------------
  339. ' Проект     :  OfflineClient
  340. ' Процедура  :  NormFile
  341. ' Описание   :  Привидение ини файла в "читабельный" вид
  342. ' Кем создан :  SNE
  343. ' Дата-Время :  08.11.2004-17:44:28
  344. '
  345. ' Параметры  :  sFileName   - Имя файла
  346. '--------------------------------------------------------------------------------
  347. Public Sub NormFile(sFileName As String)
  348.     Dim nf As Long, ub As Long, sBuffer As String, slArray() As String, sOutArray() As String
  349.     nf = FreeFile
  350.  
  351.     If FileLen(sFileName) = 0& Then Exit Sub
  352.  
  353.     Open sFileName For Binary Access Read Lock Write As nf
  354.         sBuffer = String$(LOF(nf), 0&)
  355.         Get nf, 1, sBuffer
  356.     Close nf
  357.  
  358.     slArray = Split(sBuffer, vbCrLf)
  359.     ub = &HFFFF
  360.  
  361.     For nf = 0 To UBound(slArray)
  362.         If Len(slArray(nf)) Then
  363.             ub = ub + IIf(Left$(slArray(nf), vbNull) = Chr$(&H5B), 2, vbNull)
  364.  
  365.             ReDim Preserve sOutArray(ub)
  366.             sOutArray(ub) = slArray(nf)
  367.         End If
  368.     Next
  369.     sBuffer = Join(sOutArray, vbCrLf)
  370.     Call DeleteFile(sFileName)
  371.  
  372.     nf = FreeFile
  373.     Open sFileName For Binary Access Write Lock Read As nf
  374.         Put nf, 1, sBuffer
  375.     Close nf
  376. End Sub
  377.  
  378. ' §§§§§§§§§§§§§§§§§§§§§§§§§§ Вспомогательное добро §§§§§§§§§§§§§§§§§§§§§§§§§§
  379.  
  380.     ' Добавление/Удаление слэша на конце
  381. Private Function VerDblSlash(ByVal sInSection As String, _
  382.                     Optional ByVal bFlag As Boolean = False) As String
  383.  
  384.     If Len(sInSection) = 0& Then Exit Function
  385.  
  386.     If bFlag Then
  387.         VerDblSlash = IIf(Right$(sInSection, vbNull) = "\", sInSection, sInSection & "\")
  388.     Else
  389.         VerDblSlash = IIf(Right$(sInSection, vbNull) = "\", Left$(sInSection, Len(sInSection) - vbNull), sInSection)
  390.     End If
  391. End Function
  392.  

Ответить

Номер ответа: 8
Автор ответа:
 Фенягz



ICQ: 387437448 

Вопросов: 7
Ответов: 202
 Web-сайт: atauenis.narod.ru/
 Профиль | | #8
Добавлено: 22.10.08 16:31
Приведённый выше код для ВБ.НЕТ? Или для ВБ 6?

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 22.10.08 18:19
Это на VB6.. на NET код будет раз в 5 короче..

Ответить

Номер ответа: 10
Автор ответа:
 Фенягz



ICQ: 387437448 

Вопросов: 7
Ответов: 202
 Web-сайт: atauenis.narod.ru/
 Профиль | | #10
Добавлено: 22.10.08 21:58
Хорошо. Это мне пригодится-я пишу прогу где нужно сохранять настройки в ИНИ (реестр не люблю).

Ответить

Номер ответа: 11
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #11
Добавлено: 23.10.08 02:57
  1.     Dim mc As System.Text.RegularExpressions.MatchCollection = _
  2.     New System.Text.RegularExpressions.Regex("(?<key>\w+)\s*=\s*(?<value>.*)((?=\W$)|\z)", System.Text.RegularExpressions.RegexOptions.Multiline).Matches( _
  3.     "[Группа1]" & vbCrLf & _
  4.     "Параметр1 = блаблабла" & vbCrLf & _
  5.     "параметр2 = труляля" & vbCrLf & _
  6.     "параметр3 = гыгыгы" & vbCrLf & _
  7.     "[Группа2]" & vbCrLf & vbCrLf & _
  8.     "Параметр1 = ухтыухтыухты" & vbCrLf & _
  9.     "параметр2 = воттаквот" & vbCrLf & _
  10.     "параметр3 = простопараметр" & vbCrLf & _
  11.     "параметр4=итакоебывает" _
  12.     )
  13.     For Each m As System.Text.RegularExpressions.Match In mc : MsgBox(m.Groups("key").Value & " = " & m.Groups("value").Value) : Next

Ответить

Номер ответа: 12
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #12 Добавлено: 23.10.08 08:40
Не, Лех.. так не пойдет, это криво. Я как то давно писал библиотеку для работы с ini.. Поискать надо на винте просто. Там все по взрослому.. со всеми правилами ООП! :-)

Ответить

Номер ответа: 13
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #13
Добавлено: 23.10.08 09:34
Не, Лех.. так не пойдет, это криво.

ясен коре (c)! Это место раскопок :)
А халявы сегодня не будет, я как-то делал сериализуемый ини-класс :)
Вот еще кривой, но простой вариант:
  1.     Dim arr() As String = _
  2.     Split("[Группа1]" & vbCrLf & _
  3.     "Параметр1 = блаблабла" & vbCrLf & _
  4.     "параметр2 = труляля" & vbCrLf & _
  5.     "параметр3 = гыгыгы" & vbCrLf & _
  6.     "[Группа2]" & vbCrLf & _
  7.     "Параметр1 = ухтыухтыухты" & vbCrLf & _
  8.     "параметр2 = воттаквот" & vbCrLf & _
  9.     "параметр3 = простопараметр" & vbCrLf & _
  10.     "параметр4=итакоебывает", vbCrLf)
  11.     For Each s As String In arr
  12.       If s.Trim().Length > 0 Then
  13.         Dim a() As String = s.Split("=")
  14.         If a.Length > 1 Then MsgBox(a(0).Trim() & " = " & a(1).Trim())
  15.       End If
  16.     Next

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 23.10.08 10:40
:-)))
Вот еще кривой

+1 )))

Минусы
- теряется название группы
- теряются комменты
- не учел тот факт, что у параметра может не быть значения, а это значит что на строке a(1).Trim получишь исключение :-)

А халявы сегодня не будет

Если найду свою библиотеку, то будет! ))) Она даже записывать умеет,и поддерживает каменты к параметрам и секциям + проверяет уникальность ключа и секции

Ответить

Номер ответа: 15
Автор ответа:
 Алексей



black  admin

ICQ: 261779681 

Вопросов: 87
Ответов: 633
 Web-сайт: aleksey.nemiro.ru
 Профиль | | #15
Добавлено: 23.10.08 10:54
Минусы

это мелочи, и поправимо :)
Перфекционизм на уровень зп все равно никак не влияет :)
Если найду свою библиотеку, то будет! )))

нефиг, пускай сам думает, тем более что балабаса ему дали предостаточно :)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам