INI файл або XML
Є необхідність зберігати дані. В основному це текстові рядки - вони згруповані в групи і підгрупи.
Хотів використовувати ini. але там немає вкладеності і я не знайшов функції дозволяє відобразити всі наявні групи.
питання:
1. чи є така функція у ini файлів?
2. Чи простіше буде використовувати xml?
3. як працювати з xml (по конкретиці:
3.1 чи потрібні сторонні компоненти?
3.2 як записати наприклад рядок c: \ run.exe, в групу application, в підгрупу video з параметром -mini
3.3. як отримати список груп, а потім по групі список підгруп, а вже по ним список рядків?
я не любитель складнощів і порадив би ini (можна і вкладення зробити), але в даному випадку, xml це воно!
потрібен парсер xml, почитай про структуру зберігання даних в xml.
> 1. чи є така функція у ini файлів?
У ini-файлів є функція ReadString і WriteString. Як ти їх будеш використовувати - справа твоє. При бажанні можна і на ini-файлі ієрархічну структуру створити. Треба тільки трохи подумати. )
> 2. Чи простіше буде використовувати xml?
Напевно простіше. Тільки от якщо ти сам парсер писати не будеш, а будеш використовувати якийсь готовий, то май на увазі, що його може і не виявитися на тій машині, де запускається твоя програма.
> 3. як працювати з xml (по конкретиці:
> 3.1 чи потрібні сторонні компоненти?
При чому тут компоненти.
> 3.2 як записати наприклад рядок c: \ run.exe, в групу application,
> # XA0; в підгрупу video з параметром -mini
Очевидно, додавши вузол з атрибутами в якості дочірнього до вузла Video
> 3.3. як отримати список груп, а потім по групі список
> Підгруп, а вже по ним список рядків?
У загальному випадку - рекурсією. У приватному - можна обійтися без неї.
1.нет
2.проще
3. складне питання
3.1 не потрібні
3.2 можна по всякому
3.3 selectnodes
можна і вкладення зробити
А чи потрібно і заради чого?
Якщо ще врахувати, що однойменні діти можуть бути у абсолютно різних батьків.
> Чи потрібні сторонні компоненти?
Є готовий - TXMLDocument
> Як отримати список груп, а потім по групі список підгруп,
> # XA0; а вже по ним список рядків?
XPath повинен допомогти
> А чи потрібно і заради чого?
за умовою потрібна вкладеність
> Якщо ще врахувати, що однойменні діти можуть бути у зовсім
> Різних батьків.
і що? скільки батьків, стільки дітей! в чому проблемма то?
я сказав що можна, але це трохи складніше ніж xml)
> Але це трохи складніше ніж xml)
Взагалі не складніше.
> Взагалі не складніше.
тут думати треба а в xml готове все)
і що? скільки батьків, стільки дітей! в чому проблемма то?
я сказав що можна, # XA0;)
секція "рушниці" і "гвинтівки" і в обох діти "патрони"
накидай приблизну структуру іні
але це трохи складніше ніж xml
Ось і питається, навіщо тут іні.
> Секція "рушниці" і "гвинтівки" і в обох діти "патрони"
> Накидай приблизну структуру іні
>
А що тут незрозумілого? У рушниць патрони одні, у гвинтівок - інші. Там мисливський, там - унітарний.
ти структуру іні намалюй. і щоб секції Патрони перейменовувати
і де тут секції "рушниці" і "віновкі"?
треба буде взагалі компонентік навоять (c вкладеністю в ini)
> У ini-файлів є функція ReadString і WriteString. як
> Ти їх будеш використовувати - справа твоє. При бажанні можна
> І на ini-файлі ієрархічну структуру створити. треба тільки
> Трохи подумати. )
Так я розумію - просто назва всієї ієрархії ставити буду не я - і знайти їх можна буде - відкривши і знайшовши всі секції (я просто думав є функція - # XA0; самому лінь морочитися :))
> Напевно простіше. Тільки от якщо ти сам парсер писати не
> Будеш, а будеш використовувати якийсь готовий, то май
> На увазі, що його може і не виявитися на тій машині, де запускається
> Твоя програма.
Парсер писати не буду. Наскільки я зрозумів є парсер Microsoft "а. Він є у всіх або його потрібно буде ставити.
> При чому тут компоненти.
ну незнаю - може потрібні :)
> Є готовий - TXMLDocument
А щось на комп'ютері клієнтів ставити потрібно буде?
> І де тут секції "рушниці" і "віновкі"?
хворієш?
А якщо ще й Парент в кожній секції вказувати - зовсім не складно буде.
> А якщо ще й Парент в кожній секції вказувати - зовсім
> Складно буде.
та це все, як 2 байта передати;)
Так пофик що це.
Вкладеність і ієрархія ж реалізовані, значить це повинно бути нескладно.
Або складно?
тим більше, що
та це все, як 2 байта передати;)
1. читаємо все sect
2. читаємо index1 всіх sect.
А для третього рівня ієрархії?
> А для третього рівня ієрархії?
в даному випадку тільки 2 рівня.
[Delphi] procedure ReadSections (Strings: TStrings); overload; override;
Description
Call ReadSections to retrieve the names of all sections in an INI file into a string list object.
Strings specifies the string object to hold the retrieved names. Strings can point to a TStrings object, or to a component property, such as Items for a TListBox component.
в даному випадку тільки 2 рівня.
Це наказ? Або ти хочеш запропонувати мені халтурку?
Якщо ДУЖЕ сильно треба отримання всіх атрибутів одного рівня (хоча я такого завдання ще ніколи не зустрічав) - вводимо поняття Level. А сам файл вантажимо в ієрархічну структуру, з якою працюємо.
> Замість використання xml який і призначений для подібних завдань
XML занадто важкий, перевантажений і надмірний. Я б в сторону більш легких мов розмітки порадив би подивитися, тіпаJSON або YAML. Їх багато, насправді.
Це наказ? Або ти хочеш запропонувати мені халтурку?
Все те ж саме можна і без іні зробити. На простому текстовому файлі.
Воно комусь треба?
XML занадто важкий, перевантажений і надмірний.