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