-
Всем привет! Вопрос в следующем: есть INI-файл, нужно прочитать из него параметры, но дело в том, что они указаны следующим образом:
[SECTION 1]
PARAM1 = "123"
PARAM2 = 555
[SECTION 2]
PARAM3
PARAM4
PARAM5
секцию [SECTION 1] прочитать легко (стандартными ср-вами TIniFile), а вот как прочитать параметры из секции [SECTION 2]? ЗЫ Пробовал получить все параметры из секции ReadSection('SECTION 2', myparams) , но результата не получил.. как быть? может есть какие-нить компоненты, которые могут выполнить эту работу? Зарание спасибо!
-
-
Секция 2 испорчена, это уже не ини файл, а просто порушеный файл и работать надо с ним не как с ини файлом.
-
изв.. прога с torry.net наз-ся Ini Edit v.2.1...
Anatoly Podgoretsky по-сути - это синтаксис INF-файла для Windows, т.е. структура отличается только тем, что в секции могут быть и такие "порушенные" параметры...
ниужели нет спобов автоматизировать чтение таких файлов (кроме как вручную), вот например InnoSetup 5.x-версии тоже читает подобные файлы (в секции Code, по-моему)...
может ещё кто-нить подскажет...
-
> Алексей К. (19.04.2008 15:16:03) [3]
Да напиши ты сам свою функцию, делов то, обычная работа с текстовым файлом, например через ReadLn Или ты думаешь, что та другая программа работает иначе. Через ИНИ АПИ можно работать только с ИНИ файлами, а это строгая структура и никакого понятия о порядке записей, гарантируются только сохранение списка параметров в рамках секции.
-
и действительно... вот кусок кода 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-файлам).. как, хотяб примерно, это делает сама ОС?
-
> Алексей К. (19.04.2008 16:29:05) [5]
Если INF файл соответствует спецификации INF файлам Микрософт, то последний имеет для этого специальный INF SDK и инструментарий
-
А можно еще сам фал преобразовавать на входе. Просто дописавать «=» туда где его нет. А работать как с ини
-
насчет этого я тоже думал, это метод через (_._), хотя работать будет ;)
Так как насчет TStringList? есть возможность выводить в Names[x] также и имена, не содержащие '=' (как будто это просто пустое имя, без значения)...?
-
> Алексей К. (19.04.08 20:34) [8]
> Так как насчет TStringList? есть возможность выводить в > Names[x] также и имена, не содержащие '=' (как будто это > просто пустое имя, без значения)...?
А как насчет хелп почитать? A name-value pair.
Пользуй TParser и наступит полный контроль.
-- Regards, LVT.
|