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