Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 kwi 2026, o 15:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 22 gru 2013, o 22:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Mam kod:
Kod:
const uint8_t MN00[] PROGMEM = "Menu/exit";

const uint8_t MN10[] PROGMEM = "RTC Setup";
const uint8_t MN20[] PROGMEM = "Card Setup";

const uint8_t MN11[] PROGMEM = "Time";
const uint8_t MN12[] PROGMEM = "Date";

const uint8_t MN21[] PROGMEM = "Mount";
const uint8_t MN22[] PROGMEM = "Umount";

const uint8_t *MENU[] = { MN00, MN10, MN20 };


Jak teraz np. zrobić:
sizeof() MN00 posługując się zmienną wskaźnikową MENU? :)

sizeof(MENU[0]); - NIE
sizeof(&MENU[0]); - NIE

To jak?

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2013, o 22:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 lis 2012
Posty: 88
Pomógł: 2

sizeof(*MENU[0]); ??

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2013, o 22:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

a może

#define MENU_SIZE 10

i dalej to juz prosto , bo tak jak sie domyslam menu sie nie bedzie rozrastało dynamicznie podczas działania programu ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2013, o 22:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2011
Posty: 401
Lokalizacja: Siedlce
Pomógł: 7

Chyba już wpadłem ;)

Skoro:
Kod:
(uint16_t)MENU[0]
daje adres pierwszego znaku, to dalej wystarczy zwiększać licznik aż natrafimy na NULL...

Kod:
uint8_t MenuStrSize(uint8_t idx) {
    uint8_t size=0;

    while (pgm_read_byte((uint16_t)MENU[idx]+size) != 0) {
   size++;
    }

    return size+1;
}

_________________
Czekamy na RedBook'a!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2013, o 23:45 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

no no no - fajnie fajnie - tylko po co tak na okrętkę jak są funkcje wbudowane ;)

strlen()

albo

strlen_P()

;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO