Pozri na prispevok "
od dxr » 09 Máj 2015, 18:21" - ako som to napisal ja??????!?!!!???
podla mna je to inak uz len poradie je ine a to poradie ma svoju logiku. nepusti do vstupu co tam nepatri.
TEBE TAM chyba toto zacatek = readString.indexOf("pwm=");
// uz v prvom prispevku si to mal spravne - preco to mas v tom poslednom zle netusim ja som to tak nepisal.
buff[0] = readString.charAt(zacatek+4); // cislo "2"
buff[1] = readString.charAt(zacatek+4+1); // cislo "8"
buff[2] = readString.charAt(zacatek+4+2); // cislo "0"
pwm_cislo = atoi(buff); // pwm_cislo je integer cize datovy typ pre cisla
if (zacatek) { .............. } Urcite som mal podmienku za indexOf/hladanim nie opacne ako ty.
odkial bude "zacatek" mat spravnu hodnotu ked indexOf mas az za nim???? toto musi vediet aj zaciatocnik
to nieje o programovani ale logicka uvaha...
Nehrozi ze by som dal premmenu do podmienky bez toho aby som ju predtym neinicializoval.
To som fakt nespravil. Ja som to popisoval
aha tu
Zakomentoval si - pripad ked sa ma priradit hodnota ak je zly vstup.
Stav ked nemozes robit atoi() niesu cisla ale ine znaky v buff to tam nieje pre srandu.
Toto som spravil tiez JA ?????
Nula sa ti pravdepodobne nehodila tak si tam pridal dalsi atoi()
ktory je mimo podmienky a bez kontroly vstupu znakov. Ja som to mal v podmienke nie zanou a 2x
Rozdiel medzi "=" a "==" toto musi vediet zaciatocnik prirad a porovnaj sorry. inak sa do ETH projektu nepustat.
Ostat pri blikani a pokial nejde syntax tak toto nerobit... co potom pri pointroch budes robit.
Kód: Vybrať všetko
pwm_cislo == ZLA_HODNOTA; // to je 65535 alebo tam daj nulu ak ti to nevadi....
hladas tam set= ale mas premmenu pwm_cislo - to som tiez spravil ja ? a kopa ineho...
Kód: Vybrať všetko
if (zacatek)
{ // len ak v requeste je nasiel retazec "&pwm="
// netestujem ci je parameter spravny.... ci je skutocne 3 znaky.. to si dorob
zacatek = readString.indexOf("set=");
Nic vzlom ale taketo
chyby som v kode nemal a to nehovodim ze to atoi() tam mas vsade kde si nedostal hodnotu ktoru si cakal
proste si tu funkciu nacpal vsade 3x aby si dostal nejake cislo
ja som tam napisal miniimalne 3x ochrany ktore brania tomu co sa ti stalo ze dostavas NON-PRINTABLE znaky
ty si to uz aj tak zjednodusene kontrolovanie vstupu ktore je nutnost ak davas nieco na SIET vyhodil
alebo odfajcil a potom sa cudujes ze tam nieje to co cakas nie nieje lebo pustis dalej somarinu
a cely kod sa zruti hodnoty ukazuju inde alebo niesu inicializovane alebo ziskaju rozsahy ktore niesu dobre.
Zmaz ten kod a skus to spravit znova od nuly... henten kod sa ani neda opravit....
Kroky:
1) Precitat cely riadok URL requestu
2) dat pozor ci nieje dlhsi ako je dlzka pola aby nepretiekol
3) potom treba pozret ci tam mas parametre tvoje "pwm=" alebo "set="
ak tam je aspon jeden
tak si zoberies vsetko od rovnasa po koniec cisla bud moja fixna dlzka alebo inak
4) ak su znaky ktore maju byt cislo skutocne cislo tj znaky 0..9 na to sluzi isdigit()
ak niesu tak to bud nahradis DEFAULT hodnotou - ja to volam zla alebo nic nespravis ZIADNE atoi()
5) ak su znaky ok tak robis atoi() a updatujes vystup ( ked nebudu spravne neupdatujes ignorujes)
Takto som to napisal teraz si to zlep z tych kuskov kde to bolo dobre.
Mohol by som ti to opravit a napisat cely program ale nechcem chcem aby si to spravil sam a vedel ako na to.
lebo by som nerobil nic ine len pisal taketo veci za inych a nic by sa nenaucili. Preto chcem aby si to napisal znova.