Menu kezelés C-ben
Rancz Lajos
csiga at fosch.com
Fri Sep 21 13:08:35 CEST 2007
Helló!
Miért? Lehet ugyanaz a függvény más bemenő paraméterekkel. Ha nagyon
egyfélére csinálod, akkor csak nagyon nagy reszelések árán tudsz olyat
beletenni, ami nincs benne :-) Már többször megszívtam ezt, úgyhogy ha
ilyet kéne csinálnom akkor vmilyen scriptnyelv félét találnék ki, amit
YACC-al (http://dinosaur.compilertools.net/) lefordítanék C-re.
Üdv,
Lajos
hg12345 wrote:
> 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
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list