Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
Алексей К.   (2008-04-19 14:49) [0]

Всем привет!

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

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

[SECTION 2]
PARAM3
PARAM4
PARAM5


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

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

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


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

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

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


 
Anatoly Podgoretsky ©   (2008-04-19 15:07) [2]

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


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

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

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

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

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


 
Anatoly Podgoretsky ©   (2008-04-19 15:52) [4]

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

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


 
Алексей К.   (2008-04-19 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 ©   (2008-04-19 17:48) [6]

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

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


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

А можно еще сам фал преобразовавать на входе. Просто дописавать &laquo;=&raquo; туда где его нет. А работать как с ини&#133


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

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

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


 
Leonid Troyanovsky ©   (2008-04-19 20:46) [9]


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

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

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

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

--
Regards, LVT.


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


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



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


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


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

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


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

инетерно.. ф-ия 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:24) [12]

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

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

19.04.08 20:34

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


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

всЁ!

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

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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
2-1208348461
Armavir
2008-04-16 16:21
2008.05.18
Border формы


15-1207059668
asdf2
2008-04-01 18:21
2008.05.18
Есливставить вторую видюху и подключить ко второму монитору


8-1179992364
namco
2007-05-24 11:39
2008.05.18
Video in Delphi


2-1208406785
TPopupActionBarEx
2008-04-17 08:33
2008.05.18
Креатим в рантайме, как избавится от ошибки?


3-1196084789
AntonUSAnoV
2007-11-26 16:46
2008.05.18
пропадает полоса прокрутки в dbgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский