![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
capricorn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.10.2007 Репутация: 1 Всего: 1 |
Всем привет!
Вопрос в следующем: есть INI-файл, нужно прочитать из него параметры, но дело в том, что они указаны следующим образом: [SECTION 1] PARAM1 = "123" PARAM2 = 555 [SECTION 2] PARAM3 PARAM4 PARAM5 секцию [SECTION 1] прочитать легко (стандартными ср-вами TIniFile), а вот как прочитать параметры из секции [SECTION 2]? ЗЫ Пробовал получить все параметры из секции ReadSection('SECTION 2', myparams) , но результата не получил.. как быть? далее... на http://www.torry.net/quicksearchd.php?Stri...i&Title=Yes нашел прогу, Ini Edit v.2.1, которая читает файлы как раз, как мне нужно, но исходников нет =(, Зарарание спасибо! ЗЫ подобные файлы - являются файлами INF (в основном), поэтому тут такая заморочка... |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 1 Всего: 54 |
||||
|
||||
capricorn |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.10.2007 Репутация: 1 Всего: 1 |
хммм...
там полностью расписана работа с INI-файлами правильной структуры... у меня же проблема в том, что структура файла немного иная, т.е. есть подобные секции: [SECTION 2] PARAM3 PARAM4 PARAM5 стандартные ср-ва Windows (для INI-файлов естественно) не позволяют читать такие секции (я говорю о ф-иях GetPrivateProfileString и GetProfileString, на которых и основан класс TIniFile)... так вот я и спрашиваю, может есть какие-нить компоненты/либы для работы с подобными (INF) файлами...? |
|||
|
||||
SneG0K |
|
|||
![]() Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 1 Всего: 54 |
Берешь TStringList и анализируешь все ручками. Других вариантов не знаю... Либо переделывай структуру файла
|
|||
|
||||
Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
capricorn |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 22.10.2007 Репутация: 1 Всего: 1 |
Вобщем выяснилось вот что.
Inf-файлы windows, с которыми и предполагалось работать имеют немного другую структуру, чем Ini-файлы:
т.е. строки парсятся уже потом (для получения параметров вида <ключ>=<значение> и т.д)... далее. ф-ии Windows для работы с INI-файлами не позволяют читать параметры с переносами строк: ![]()
Такие параметры так-же могут использоваться в REG-файлах Поэтому я решил написать модуль для работы с Inf-файлами. (в нем только самые необходимые функции для чтения/записи строк, парсинг параметров пока во внимание не берется) Сначала я пытался дописать существующий модуль для работы с Ini-файлами IniFiles32 (от Stephan Schneider), но найдя там более 5 грубых ошибок, решил все-таки писать с нуля... ![]() вот что из этого получилось:
Для описания ф-ий см. комментарии... Надеюсь, что кому-нить может и пригодится ![]() ЗЫ Если вы нашли ошибку/баг в моем модуле, пожалуйста, сообщайте... Это сообщение отредактировал(а) capricorn - 22.4.2008, 11:34 |
||||||
|
|||||||
vserd |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 9.10.2008 Репутация: нет Всего: нет |
меняем на
Это сообщение отредактировал(а) vserd - 9.10.2008, 17:49 |
||||||
|
|||||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
вроде как для работы с inf файлами в винде есть ряд функций в setup api...
в частности см. Extracting File Information from the INF file -------------------- There are always someone smarter than you... |
|||
|
||||
MetalFan |
|
||||||||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
кстати,
не знаю, что это за модуль такой и что там за ошибки... но не удержусь прокомментировать некоторые моменты представленного кода 1.
я конечно понимаю, что класс является наследником TObject, и на некоторые моменты можно положить... но стоит, имхо, объявить деструктор перекрытым (override) и вызывать из его реализации метод предка (inherited) так же неясно, зачем строковому полю класса делается Finalize. 2. медленное и неэффективное решение, достойное студента первого курса в лабе по паскалю. чем функции Pos и Copy не угодили? 3. запись
логичнее выглядит так:
4. опять лишние телодвижения
чем copy не угодило? 5. функция RemoveStr вообще не доступна моему пониманию... имхо слишком усложненный код. и т.д.... p.s. без обид ![]() Это сообщение отредактировал(а) MetalFan - 9.10.2008, 21:46 -------------------- There are always someone smarter than you... |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |