Re: Menu kezelés C-ben

hg12345 hg12345 at freemail.hu
Fri Sep 21 13:02:09 CEST 2007


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ó....  



> Helló!
> 
> Hát nem egyszerű feladat :-) Az ilyen nagyon általános programok 
szoktak 
> rettenetesen bonyolultak, és nehezen bővíthetőek lenni :-)) Egy 
egyszerű 
> megoldás:
> 
> // Általános fv. pointer, int-et ad vissza, pointert eszik
> typedef int (*pfv) (void *);
> 
> // Menü elem típus
> typdef struct {
>     pfv     print;
>     pfv     exec;
> } menuElement;
> 
> // Menü típus
> typedef struct {
>     MenuElement   *elements;
>     int                        numOfElements;
> } Menu;
> 
> int menu(Menu *mptr, int choose)
> {
>     // Itt le kell kezelni, a lefele, felfele gombokat
>     // Kiirataskor a menuElement print pointeret kell hivni
>     // Enter- utesekor, pedig az exec-et, nyilvan tobbszintu 
> menurendszer eseten a pointer a menu függvényre fog mutatni :-)
> }
> 
> Ezt az alap struktúrát lehet pofozgatni mindenféle irányba :-)
> 
> Üdv,
> Lajos
> 
> hg12345 wrote:
> > Hi!
> >
> > Most tanulom a C-t, kerestem a neten ilyen programot, de nem 
találtam.
> > Hatha valaki már találkozott ilyen problémával.
> >
> > Hogyan lehet C-ben hordozható kódban definiálni olyan szelektiv 
és 
> > szenzítiv menu-t aminek a kódja nem felejtő és nem átírható 
> > memóriában van. FLASH,ROM, a program beléspési kódok nem 
írhatók 
> > át.... ez a kezelésben nem észrevető, azok a menüpontok 
amelyeket 
> > nem használ a készülék eltünnek, ha szükséges az állítása 
tiltható.....
> >
> > Úgy szeretném, ha lenne egy konstans tömb amit forditási időben 
> > töltenék fel a menü leírással, és egy program ami ezt kezelné. Mivel 
> > nagyon sok menü bejegyzés lehetséges (min. 50, de van olyan 
> > készülék ami 4500, ill 30000 feletti bejegyzést tartalmaz) elég 
tömör és 
> > hatásos leiró szükséges egy bejegyzéshez....  Persze sok azonos 
> > bejegyzés van ami csak egy sorszámban (indexben) tér él.  
> > Megjegyezném egyes bejegyzések tulajdonságai más 
bejegyzésektől 
> > függhetnek, öröklödhetnek.
> >
> > Jó lenne ha ez a rész minél kisebb területen elférne. Nem 
szeretnék 
> > nagyon nagy flash memória kapacítású kontrollert használni (32-
64K 
> > felett)
> >
> > A problémát nem most találtam ki, megoldható és müködik ilyen 
> > programom, de a technika amivel ezt előállítom, C-ben a fordító 
> > megkötései miatt nem használható. A jelenlegi kivitel is csak 
teljesen 
> > egybe forditott program esetén használható, nem viseli el a linkert. 
> > Ami az átkódolást nehezíti a linkerek nem tudnak kettős cím 
müvelteket 
> > végezni..... pl.:  const int *pValtozo= &változó1 + &változó2
> >
> > Elöre köszönök minden segítséget (link, programrészlet) , de akár 
meg 
> > is vásárolnám a megoldást.
> >
> >   Havas Gábor
> >
> > Olvasd az [origo]-t a mobilodon: mini magazinok a Mobizin-en
> > ___________________________________________________
> > www.t-mobile.hu/mobizin
> >
> > -----------------------------------------
> >           elektro[-flame|-etc]
> >   
> 
> -----------------------------------------
>           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