Конференция "Начинающим" » Чтение параметров из INI-файла
 
  • Алексей К. (19.04.08 14:49) [0]
    Всем привет!

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

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

    [SECTION 2]
    PARAM3
    PARAM4
    PARAM5



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

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


    , но результата не получил.. как быть? может есть какие-нить компоненты, которые могут выполнить эту работу?

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

    но, так сказать, пример я привел ;)
  • Anatoly Podgoretsky © (19.04.08 15:07) [2]
    Секция 2 испорчена, это уже не ини файл, а просто порушеный файл и работать надо с ним не как с ини файлом.
  • Алексей К. (19.04.08 15:16) [3]
    изв.. прога с torry.net наз-ся Ini Edit v.2.1...

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

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

    может ещё кто-нить подскажет...
  • Anatoly Podgoretsky © (19.04.08 15:52) [4]
    > Алексей К.  (19.04.2008 15:16:03)  [3]

    Да напиши ты сам свою функцию, делов то, обычная работа с текстовым файлом, например через ReadLn
    Или ты думаешь, что та другая программа работает иначе. Через ИНИ АПИ можно работать только с ИНИ файлами, а это строгая структура и никакого понятия о порядке записей, гарантируются только сохранение списка параметров в рамках секции.
  • Алексей К. (19.04.08 16:29) [5]
    и действительно...
    вот кусок кода 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 © (19.04.08 17:48) [6]
    > Алексей К.  (19.04.2008 16:29:05)  [5]

    Если INF файл соответствует спецификации INF файлам Микрософт, то последний имеет для этого специальный INF SDK и инструментарий
  • Kolan © (19.04.08 20:19) [7]
    А можно еще сам фал преобразовавать на входе. Просто дописавать «=» туда где его нет. А работать как с ини…
  • Алексей К. (19.04.08 20:34) [8]
    насчет этого я тоже думал, это метод через (_._), хотя работать будет ;)

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

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

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

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

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

    --
    Regards, LVT.
 
Конференция "Начинающим" » Чтение параметров из INI-файла
Есть новые Нет новых   [134491   +8][b:0][p:0.001]