Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Чтение параметров из INI-файла


Алексей К. ©   (2008-04-19 14:49:00) 

Всем привет!

Вопрос в следующем:
есть INI-файл, нужно прочитать из него параметры, но дело в том, что они указаны следующим образом:

[SECTION 1]
PARAM1 = "123"
PARAM2 = 555

[SECTION 2]
PARAM3
PARAM4
PARAM5


секцию [SECTION 1] прочитать легко (стандартными ср-вами TIniFile), а вот как прочитать параметры из секции [SECTION 2]?

ЗЫ
Пробовал получить все параметры из секции
ReadSection('SECTION 2', myparams)
, но результата не получил.. как быть? может есть какие-нить компоненты, которые могут выполнить эту работу?

Зарание спасибо!


Алексей К.   (2008-04-19 21:45:00) [1]

всЁ!

задача успешно решена! (отдельное спасибо sniknik ;))

я нашел в сети модуль для работы с ini-файлами через StringList, немного переделал, теперь он годится и для inf-файлов =) если кому нужно, могу залить куда-нить...

ВСЕМ СПАСИБО!


Алексей К.   (2008-04-19 21:24:00) [2]

Оригинал, нет, ничего я не жду... просто хочу узнать, можно-ли это реализовать стандартными классами дельфи...

на начет:
19.04.08 14:49

19.04.08 20:34

это не значит, что я весь день за компом сижу.. %)


Алексей К.   (2008-04-19 21:21:00) [3]

инетерно.. ф-ия ValueFromIndex, в принципе, возвращает мне нужную строку, но вот почему-то отрезает 1-й символ

в файле:
0x1,"Classes\CLSID\{1171A62F-05D2-11D1-83FC-00A0C9089C5A}",,"FlashProp Class"

ф-ия возвращает:
x1,"Classes\CLSID\{1171A62F-05D2-11D1-83FC-00A0C9089C5A}",,"FlashProp Class"

С чем это может быть связано?


Оригинал   (2008-04-19 21:10:00) [4]


> Алексей К.   (19.04.08 20:34) [8]
> насчет этого я тоже думал, это метод через (_._), хотя работать
> будет ;)Так как насчет TStringList? есть возможность выводить
> в Names[x] также и имена, не содержащие '=' (как будто это
> просто пустое имя, без значения)...?



> Алексей К.   (19.04.08 14:49) 


> Алексей К.   (19.04.08 20:34) [8]


И до сих пор не написана функция по работе с кривыми параметроами в файле?

Ждешь готовой функции?


Leonid Troyanovsky   (2008-04-19 20:46:00) [5]


> Алексей К.   (19.04.08 20:34) [8]

> Так как насчет TStringList? есть возможность выводить в
> Names[x] также и имена, не содержащие '=' (как будто это
> просто пустое имя, без значения)...?

А как насчет хелп почитать? A name-value pair.

Пользуй TParser и наступит полный контроль.

--
Regards, LVT.


Алексей К.   (2008-04-19 20:34:00) [6]

насчет этого я тоже думал, это метод через (_._), хотя работать будет ;)

Так как насчет TStringList? есть возможность выводить в Names[x] также и имена, не содержащие '=' (как будто это просто пустое имя, без значения)...?


Kolan   (2008-04-19 20:19:00) [7]

А можно еще сам фал преобразовавать на входе. Просто дописавать «=» туда где его нет. А работать как с ини…


Anatoly Podgoretsky   (2008-04-19 17:48:00) [8]

> Алексей К.  (19.04.2008 16:29:05)  [5]

Если INF файл соответствует спецификации INF файлам Микрософт, то последний имеет для этого специальный INF SDK и инструментарий


Алексей К.   (2008-04-19 16:29:00) [9]

и действительно...
вот кусок кода TIniFile.ReadSection


     if GetPrivateProfileString(PChar(Section), nil, nil, Buffer, BufSize,
       PChar(FFileName)) <> 0 then
     begin
       P := Buffer;
       while P^ <> #0 do
       begin
         Strings.Add(P);
         Inc(P, StrLen(P) + 1);
       end;


т.е. винда не позволяет работать с подобными файлами, соответственно вопрос. есть-ли компоненты/либы для работы с INF-файлами?

если-же нет, то как бы удобнее реализовать обработку таких файлов? (чтоб было приближенно к INI-файлам).. как, хотяб примерно, это делает сама ОС?


Anatoly Podgoretsky   (2008-04-19 15:52:00) [10]

> Алексей К.  (19.04.2008 15:16:03)  [3]

Да напиши ты сам свою функцию, делов то, обычная работа с текстовым файлом, например через ReadLn
Или ты думаешь, что та другая программа работает иначе. Через ИНИ АПИ можно работать только с ИНИ файлами, а это строгая структура и никакого понятия о порядке записей, гарантируются только сохранение списка параметров в рамках секции.


Алексей К.   (2008-04-19 15:16:00) [11]

изв.. прога с torry.net наз-ся Ini Edit v.2.1...

Anatoly Podgoretsky
по-сути - это синтаксис INF-файла для Windows, т.е. структура отличается только тем, что в секции могут быть и такие "порушенные" параметры...

ниужели нет спобов автоматизировать чтение таких файлов (кроме как вручную), вот например InnoSetup 5.x-версии тоже читает подобные файлы (в секции Code, по-моему)...

может ещё кто-нить подскажет...


Anatoly Podgoretsky   (2008-04-19 15:07:00) [12]

Секция 2 испорчена, это уже не ини файл, а просто порушеный файл и работать надо с ним не как с ини файлом.


Алексей К.   (2008-04-19 15:04:00) [13]

ЗЫ
на http://www.torry.net/quicksearchd.php?String=Ini&Title=Yesнашел прогу, Ini Manager v.1.1, которая читает файлы как раз, как мне нужно, но исходников нет =(, прога 2001 года и автор потерялсо куда-то...

но, так сказать, пример я привел ;)


Наверх

Титульная страница Поиск, карта сайта Написать письмо