Ini file feldolgozas

Hi,

Keresek valami ini file beolvaso/feldolgozo forrast. Az Audacity pont olyan config file-t hasznal, amilyen nekem kellene (fa-struktura jellegut, olyan, mint egy Windows-os ini, csak tobb group szintet tud). wxFileGonfig-gal oldottak meg, en viszont nem szeretnem csak emiatt az egy ficsor miatt a wx-et hasznalni (es alapvetoen inkabb C, mint C++ kellene).

Letezik ilyen keszen? Vagy meg kellene irni?

/sza2

Hozzászólások

Nekem valami ilyesmit kellene feldolgozni (szinte teljesen ugyanilyet):

[GUI]
[GUI/ToolBars]
[GUI/ToolBars/Control]
Dock=1
Order=1
H=55
[GUI/ToolBars/Tools]
Dock=1
H=55
[GUI/ToolBars/Meter]
Dock=1
W=275
H=55
[GUI/ToolBars/Mixer]
...

Vajon ez tudna? A minta cfg sokkal osszetetteb es mas formatumu.
A formatum kotott, nem en alakitottam ki.

/sza2

Nem mondom, hogy dögbonyolult feladat, de azér' megnézném azt a teszteléssel egy délutánt vagy annyit se... C-ben. Ahogy elnézem, rendesen dinamikus fa lesz. Különféle hibákra felkészülni, stb.
C++-ban, ha elég rutinos vagy, és ha tág értelemben vesszük a délutánt, akkor lehet.

C-ben is, tesztelessel egy delutan (13h->18h), ha nem bonyolitja tul az ember, es nem mindent 0-rol ir, csak a parsert. (Ha a fakat meg egyeb felhasznalt dolgokat is maga irja az ember, az nyilvan ratesz, de arra van N+1 lib)

Esetleg ket delutan, az elso az atgondolas. De azt igazabol este egy film mellett is teljesen jol meg lehet tenni.

--
|8]

Nem kötözködésképpen, csak hogy a kérdezőt ne vigyük félre:

> Ha a fakat meg egyeb felhasznalt dolgokat is maga irja az ember, az nyilvan ratesz, de arra van N+1 lib

Ez igaz, de ehhez meg ismerni kell az adott libet. Ha nem ismered, ahhoz is kell idő. Ráadásul a C-nek nem a dinamikus adatkezelés általánosítása az erőssége.

Nyilván 10 év rutinnal nem probléma a feladat.

A legtobb lib rendelkezik hasznalhato doksival, aminek a relevans resze lehet mondjuk 2 oldal. Nem szamottevo. Aki eljutott mar odaig, hogy egyatalan ilyet akar irni, arrol feltetelezem, hogy egy ilyen meretu dokumentacio atolvasasa nem okoz neki problemat.

De, hogy leegyszerusitsem a dolgot, en a kovetkezo barbar megoldast alkalmaznam:

* Soronkent olvasom a filet
* Ha ures, vagy #-vel kezdodik, skip
* Ha [...] alaku, akkor a koztes reszt kikapom current_section-be, es kov sor.
* A tobbi esetben ha nem Foo=Bar alaku a stuff, akkor error
* Ha ilyen alaku, akkor = menten split, fogom a config hasht, es current_section + "/" + key kulcsra beteszem a = utani stringet.
* Repeat until EOF

Igy a GUI/ToolBars/Tools alatti Dock valtozo kulcsa pl GUI/ToolBars/Tools/Dock lesz. Lehet accessort irni ami atoi()zik, es intet ad vissza.

Ha meg olyan kell, hogy listazni a GUI/ alatti kulcsokat, arra is lehet egy egyszeru for ciklust irni, ami megnezni, hogy a prefix egyezik-e, es ha igen, akkor orvendunk, es betesszuk a listaba.

Ennyi. Ezt lekodolni ~15 perc. Teszteseteket irni, meg megfelelo accessorokat, meg doksit, stb +3 ora. Megfelelo libet keresni, ami tud hashtablet, meg listat meg ami meg kell, es atnezni a relevans doksi reszletet +1 ora. Van egyebkent olyan lib is, amit embeddelni lehet egyszeruen, portabilis, igy nem kell azzal sem vacakolni, hogy fel legyen telepitve a celgepen (pl publib ilyen, emlekeim szerint).

Es meg mindig egy delutanon belul vagyunk. A megoldas nem lesz a legszebb, se nem a leggyorsabb, ellenben mukodik. Mivel Makefile generalasra kell, es a forras inifile sem epp a legnagyobb, nem hiszem, hogy a csucssebesseg kulonosebben fontos lenne. ~5 sec es ~1sec futas kozott, ha naponta mondjuk 5-6x fut, nem sok kulonbseg van.

--
|8]

Egy ini jellegu file-bol kellene Makefile-t csinalnom, es valami egeszen egyszerut szeretnek, minel kevesebb fuggoseggel. A Qt-t ide mar soknak tartom, ahogy a wx, GTK es a tobbi is kiesik. Ez vegulis egyszeru szovegfeldolgozas, nem akarom belekeverni a gui-s dolgokat. Nekem van fent Qt, de nem akarom mindenhol feltetetni, ahol ezt szertnek hasznalni. Az a celom, hogy kismeretu, fuggosegmentes, multiplatformos futtathato keletkezzen belole. Nem mindenkinek van kedve a telepitessel meg forditgatassal szuttyogni:-)

/sza2