Re: Menu kezelés C-ben
hg12345
hg12345 at freemail.hu
Fri Sep 21 15:18:16 CEST 2007
Szia!
Elvileg amit leírtam az programmemóriában tárolja ezt a tömböket.
De ha nem egybe forditom #include a teljes programot akkkor bizony
legalább két extern változom lesz, a függvény pointer és a memória
pointer. Kényelmes lenne azokat a függvényeket amik meghatározzák
az állíthatóságot egy segmens-be definiálni, (ez könnyen megoldható)
és a segmenses belüli relativ cimet tárolni.
static void* ptr= &&offset - &&start, de sajnos azt a GCC futási időben
tudja kezelni, a linker miatt! Mondjuk ez még nem lenne probléma.
De hasonló problémák vetödik fel a memória pointer esetén, ezt már
nem tudom eliminálni. Mindenképpen szükséges absolut és relativ
cimzés a MENU leírásban, de hogy a relativ címzést elötudjam állítani
korrekten forditási időben kellen két (nekem) absolut (de forditónak
relokalhato) címből előállítani az offsetet, erre már nem képes a linker
miatt.
Ha nem pointeresen használom, hanem csinálok egy enum index név
felsorolást, majd egy tömbre ráhuzom és ez alapján genererálom a
cimeket, akkor minden cimzés és ezzel kapcsolatos meghivás konstans
index-szü tömbkezelés. Ezzel ez megoldható, de egy hátránya van ha
már haszálom a linkert, igy a különböző programok csak az extern
néven definiált változókat látják, ha enum index felsorolást használok,
akkor az include miatt mindenki látja és hozzáfér (elgépelés és egyébb
hülyeség esetén) a neki nem elérhető változokhoz is. Ez nem nagy
probléma, de kedvezöbb lenne az global/extern megoldás.
Stackelt, Matrix, Tree stilusú MENU-t szeretnék csinálni.... kis kijelzővel
rendelkező készülékek. (1x v. 2x 7segmens kijelző, vagy 2-4 soros LCD
kijelzőn...)
A megoldáshoz nagyon közel vagyok, de reméltem valaki már
végigjárta elöttem ezt az utat... Vagy egy hasonló, de más felépítésű
megoldástra világít rá....
> Helló!
>
> És ez miért nem jó így, ha csak erre van szükség? A fordítónak meg
tudod
> mondani, hogy a programmemóriában tárolja ezeket a tömböket.
>
> Üdv,
> Lajos
>
> hg12345 írta:
> > Szia!
> >
> > Ha ezt így oldanám meg, minden Menühöz saját programot kellene
írni
> > mind az állításra mind a kirirára, mind a feldolgozásra...... Kérdés,
hogy
> > elferek a memóriában.
> >
> > Valami ilyesmit szeretnék:
> >
> > struct MENUITEM
> > {
> > int iString;
> > int *PtrMem;
> > char iNumber;
> > union{
> > struct{
> > char Setting;
> > char DecimalPoint;
> > char Valid;
> > };
> > void *Fn(void);
> > };
> > };
> >
> > #define ITEM(s,pm,in,se,de,va) {s,pm,in,{se,de,va}},
> > #define ITEMF(s,pm,in,f) {s,pm,in,{f}};
> >
> >
> > const struct MENUITEM Menu[]={
> > ITEM(.........)
> > ITEM(.........)
> > ITEMF(.........)
> > ITEM(........)
> > stb
> > };
> >
> > Ez a megoldás egyszerüen szövegesen karbantartható.....
> > Ha már benne van a FLASH/ROM-ban onnan már kényelmesen
> > feldolgozható....
> >
>
> -----------------------------------------
> elektro[-flame|-etc]
>
Olvasd az [origo]-t a mobilodon: mini magazinok a Mobizin-en
___________________________________________________
www.t-mobile.hu/mobizin
More information about the Elektro
mailing list