Menu kezelés C-ben

Rancz Lajos csiga at fosch.com
Fri Sep 21 12:46:59 CEST 2007


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]
>   



More information about the Elektro mailing list