|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Ограничение IniReadSection() в 32 КБ |
|
[решено] Ограничение IniReadSection() в 32 КБ
|
Кот Ти Сообщения: 7318 |
Профиль | Отправить PM | Цитировать При работе с функцией IniReadSection() обнаружил, что из секции обрабатываются только первые 32 КБ текста. У меня одна из секций ini-файла содержит около 50 КБ. Таким образом, вместо ~1000 пар ключ-значение я получаю только 640.
Затем нашёл в справке: "Для Win9x совместимости возвращаются только первые 32767 символов раздела". Нельзя ли это ограничение обойти кроме как написанием своего парсера ini-файлов? Версия AutoIt - 3.3.6.1 |
|
Отправлено: 13:47, 15-04-2011 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Coutty:
Но такие парсеры уже писались до нас, я в своё время этого не знал, и тоже писал свой: #include <Array.au3> $aReadSect = _IniReadSectionEx("Test.ini", "Marvell", BitOR(1, 8, 16)) _ArrayDisplay($aReadSect) ;$iReadMode: ; -1, Default -> Read only key=value entries (as default behaviour of IniReadSection) ; ; The following options can be combined together with BitOR: ; 1 -> Do not read comments ; 8 -> Do not read keys without values ; 16 -> Strip comments in values. This parameter can be added with BitOR to other flags. Func _IniReadSectionEx($sIniFile, $sSection, $iReadMode=-1) Local $aFileReadArr = StringSplit(StringStripCR(FileRead($sIniFile)), @LF) If @error Then Return SetError(1, 0, "") EndIf Local $aRetArr[$aFileReadArr[0]+1][2], $iUbound, $iSplitPos, $sKey, $sValue For $i = 1 To $aFileReadArr[0] If StringRegExp($aFileReadArr[$i], "^\s*\[\Q" & $sSection & "\E\][\s;]*.*") Then For $j = $i+1 To $aFileReadArr[0] If StringRegExp($aFileReadArr[$j], "^\s*\[[^\]]+\]\s*") Then ExitLoop 2 EndIf $iSplitPos = StringInStr($aFileReadArr[$j], "=") If $iSplitPos < 1 Then $iSplitPos = StringLen($aFileReadArr[$j]) + 1 EndIf $sKey = StringLeft($aFileReadArr[$j], $iSplitPos-1) $sValue = StringTrimLeft($aFileReadArr[$j], $iSplitPos) If $sKey = "" Then ContinueLoop EndIf If $iSplitPos = 0 Then $sValue = "" EndIf If $iReadMode <= 0 Or Not IsNumber($iReadMode) Then If Not StringRegExp($aFileReadArr[$j], "\A[^;].*=.*$") Then ContinueLoop EndIf Else If BitAND($iReadMode, 1) = 1 Then If StringRegExp($aFileReadArr[$j], "\A(\s+|);") Then ContinueLoop EndIf EndIf If BitAND($iReadMode, 8) = 8 Then If ($sValue = "" Or $sValue = $aFileReadArr[$j]) And Not StringRegExp($aFileReadArr[$j], "\A(\s+|);") Then ContinueLoop EndIf EndIf If BitAND($iReadMode, 16) = 16 Then $sValue = StringRegExpReplace($sValue, ";.*?$", "") EndIf EndIf $aRetArr[0][0] += 1 $aRetArr[$aRetArr[0][0]][0] = $sKey $aRetArr[$aRetArr[0][0]][1] = $sValue Next ExitLoop EndIf Next ReDim $aRetArr[$aRetArr[0][0]+1][2] Return $aRetArr EndFunc |
|
------- Отправлено: 16:42, 15-04-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Кот Ти Сообщения: 7318
|
Профиль | Отправить PM | Цитировать Creat0R, спасибо большое! То, что нужно)
|
Отправлено: 17:40, 15-04-2011 | #3 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Creat0R, Огромнейшее спасибо !
|
Отправлено: 12:46, 15-04-2014 | #4 |
Старожил Сообщения: 254
|
Профиль | Отправить PM | Цитировать -TRM-,
IniVirtual (AZJIO) IniEx (DXRW4E) IniString (ResNullius & MrCreatoR (G.Sandler)) тема обсуждения на официальном сайте. |
|
Отправлено: 10:07, 16-04-2014 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочее - [решено] Ограничение доступа к Wi-fi | Snake070 | Сетевые технологии | 10 | 01-08-2008 09:54 | |
Траффик в IE - ограничение | maximys_ | Сетевые технологии | 4 | 19-10-2005 16:01 | |
Ограничение трафика | Guest | Сетевые технологии | 2 | 03-10-2004 00:33 | |
Ограничение доступа в IE | Guest | Хочу все знать | 3 | 31-10-2003 17:35 | |
Ограничение скорости | Sulako | Программирование и базы данных | 1 | 15-02-2003 21:13 |
|