JKot написал:
Не понимаю зачем выдумывать свой формат? На работе пользуемся YAML для описания всех обьектов на сцене...
что ещё нужно?
Что-то, что позволит ЭТО использовать в программе на Делфи :) Без тонны дополнительных ДЛЛ, многометровых библиотек и пр.
Есть солюшн? Давай, чего ждать :)
Могу предоставить свой разработанный формат с иерархией, парсер к нему и экспортер в этот формат из ini-файла, как я писал выше. Юнит очень функционален, позволяет получить child текущего элемента, значения элементов в любом формате, например:
SomeUnit
FileName = as/script.js
Function = somefunc
Args
text = lol
count = 15
Экспортируется в файл .db, который обрабатывается кодом очень легко:
var db: TDataBase;
args: TDBRecord;
begin
db := TDataBase.Create('file.db');
if db.IsLoadedWith('SomeUnit') then begin
a := db.Root.ChildByName['FileName'].AsString; // as/script.js
b := db.Root.ChildByName['Function'].AsString; // somefunc
args := db.Root.ChildByName['Args'];
c := args.ChildByName['text'].AsString; // lol
d := args.ChildByName['count'].AsInteger; // 15
end;
db.free;
И тд, умеет сохраняться, автоматически создает ноды, есть обращаться к несуществующим, можно обращаться и так:
db.Root.ChildByName['FileName.Args.count'].AsFloat; // будет переконвертировано из int в float
Чисто из спортивного интереса могу набросать С# yaml->bin аппликуху. И из дельфы потом читать все это счастье.
Только каждый раз после редактирования придется запускать тулзу для конверта. Впрочем эт просто.