
dziekuje dziekuje za stronke.
Ok, teraz mam dalsze pytanie do fachowcow, ktory kod jest poprawnie napisany? (jak obydwa to jaka jest roznica pomiedzy nimi? kod byl pisany na forum wiec moga byc bledy, ale chyba wiadomo o co chodzi)
dim adres_main_x as byte
dim adres_main_y as byte
declare sub lcd_ (byval adres_y as byte, byval adres_x as byte)
do
if s1=0 then
incr adres_main_y
call lcd_ (adres_main_y, adres_main_x )
elseif s2=0 then
decr adres_main_x
call lcd_ (adres_main_y, adres_main_x)
end if
loop
end
sub lcd_ (byval adres_y as byte, byval adres_x as byte)
cls
locate adres_y, adres_x
lcd "test"
end sub
czy ten kod?
dim adres_main_x as byte
dim adres_main_y as bute
declare sub lcd_
do
if s1 = 0 then
incr adres_main_x
call lcd_
elseif s2 = 0 then
incr adres_main_y
call lcd_
end if
loop
end
sub lcd_
cls
locate adres_mian_y, adres_main_x
lcd "test"
end sub
Jeszcze mam jedno pytanie, jak bym chcial zrobic zmienna w procedurze ktora jest na stosie i w tej procedurze jest jeszcze jedna procedura, ktora tez korzysta z tej zmiennej, ale po wyjsci z pierwszej procedury zmienna znika ze stosu. Jak to zrobic?
czy to bedzie wygladac tak? czy jest to poprawnie napisane?
do
call pierwsza_procedura
loop
end
sub pierwsza_procedura
local x as byte
x=99
lcd "x"
call druga_procedura
end sub
sub druga_procedura
x=100
lcd "x"
end sub
Na logike to pierw wszystko bedzie odlozone na stos z pierwszej procedury (ta zmienna tez). Pozniej wywolujemy druga procedure, z czego stos sie nie zwalnia (czyli gdzies tam ta zmienna bedzie) i w tej 2 procedurze zmienna sie zmienia na x=100. Nastepnie jest koniec procedur i caly stos sie zwalnia, zgadza sie?