|
Anyone have an idea why this code works: repeat debug [13, "Choose (Y or N):"] debugin[MenuYesNo] until MenuYesNO = "Y" or MenuYesNO = "N" debug[13] parenlevel = 0 parenlevel = 0 parenlevel = 0 parenlevel = 0 debug["start with:", menu(menuposition), ",", dec parenlevel, ",", hex parenlevel]
But if I remove three of the parenlevel = 0 's it does not set parenlevel to 0?
parenlevel is a word var
My guess compiler bug. I am running in debug.
Thanks, Tom
any hope of seeing an update to the IDE?
here is the whole thing: '====================================================================== ' Balloon with a menu System '======================================================================
'=====Menu Variables menui var word menulevel var word parenlevel var word menuchoice var word btn var byte y var byte ByteFrom var word ByteTo var word one con 1 i var long Menu bytetable "(Menu(Setup#EEPROM(Init#Temp1((Yes(001))(No(099))))(init#Temp2((Yes(002))(No(099))))(Init#Alt((Yes)(003))(No(099))))(Setup#RTC((SetHour(004))(SetMin(005))))(Tests(Test#Servo((Up(006))(Down(007))))(Test#Heater((On(008))(Off(009)))(Test#Klaxon(010))(Test#RTC(011))(Test#Temp1(012))(Test#Temp2(013))))(Arm((Yes(014))(No(099)))))" ,0 'Menu bytetable "(Menu(Setup#EEPROM()Setup#RTC()Test#Heater()Arm()))" ,0 MenuStart var long MenuPosition var Long MenuYesNo var Byte '====================================================================================================== ' Main: ' Validate Menu and output to debug window ' '====================================================================================================== Main: 'Gosub ValidateMenu MenuStart = 5 gosub ProcessMenu end '====================================================================================================== ' ValidateMenu: ' make sure it is a WFF '====================================================================================================== ValidateMenu: ByteFrom = 0 ByteTo = 0 ParenLevel = 0 repeat if menu(ByteTo) = "(" then debug [13] for i = 0 to parenlevel debug ["*"] next debug [ "[", dec parenlevel, "]"] parenlevel = parenlevel + one debug [menu(byteto)] elseif menu(ByteTo) = ")" debug [13] for i = 0 to parenlevel - 1 debug ["*"] next debug [ "[", dec parenlevel, "]"] parenlevel = parenlevel - one debug [menu(byteto)] else debug [menu(byteto)] endif byteto = byteto + one until parenlevel = 0 or menu(byteto) = 0 if menu(byteto) <> 0 then debug[13,"Error: Not a WFF "] if menu(byteto) >= 32 and menu(byteto) <= 126 then debug[hex menu(byteto), " ", menu(byteto)] else debug[ hex menu(byteto)] endif debug[" at ",dec byteto] endif if (parenlevel = 0 and menu(byteto) = 0) then debug[13,"WFF"] endif Return '====================================================================================================== ' ProcessMenu: ' It's a Tree '====================================================================================================== ProcessMenu: repeat MenuPosition = MenuStart + 1 debug ["Menu Start:", dec menustart, ",", "MenuPosition:", dec menuposition] if menu(menuposition) >= "0" and Menu(menuposition) <= "9" then ' what is the # ' do that number ' go up a level in the tree else Repeat debug [13] while menu(MenuPosition) <> "(" debug [menu(menuposition)] menuposition = menuposition + 1 wend debug [13,"wait for button"] 'debug[MenuPosition] ' if they choose it I I reset the menu start and fall thorugh a lot of below MenuYesNO = " " repeat debug [13, "Choose (Y or N):"] debugin[MenuYesNo] until MenuYesNO = "Y" or MenuYesNO = "N" debug[13] parenlevel = 0 parenlevel = 0 parenlevel = 0 parenlevel = 0 debug["start with:", menu(menuposition), ",", dec parenlevel, ",", hex parenlevel] repeat debug [dec menuposition, ",",dec parenlevel,",", menu(menuposition)] if menu(menuposition) = ")" then parenlevel = parenlevel - 1 elseif menu(menuposition) = "(" parenlevel = parenlevel + 1 endif menuposition = menuposition + 1 Until parenlevel = 0 'menuposition = menuposition + 1 Until menu(MenuPosition) = ")" 'menuposition = menuposition + 1 debug [13,"Done"] MenuYesNO = " " repeat debug [13, "Choose (Y or N):"] debugin [MenuYesNo] until MenuYesNO = "Y" or MenuYesNO = "N" debug [13] ' if they choose it go out one level endif until 1 = 2 return
|