[Gambas-user] Program going off the rails in a way I can't explain. Help?

Bill Richman bill at ...2351...
Mon Jan 18 17:36:52 CET 2010


Charlie Reinl wrote:
> Am Montag, den 18.01.2010, 08:23 -0600 schrieb Bill Richman:
>   
>> I've got a really weird problem going on.  I've been working on this
>> project for about a month, and today I decided to make some major
>> changes to the user interface operates.  I moved some code around and
>> delete some code, and now when I run it in the IDE, it randomly jumps
>> into the sub that handles the click event for a combo-box control called
>> cbBedList_Click().  The routine "Populate_cbBedList()" gets called by
>> "Form_Open", and reads values from a database to populate the
>> Combo-box.  As far as I can remember, I haven't changed the code for
>> this form at all, but seemingly for no reason, when it hits line "178
>> cbBedList.Clear" in the Populate sub, it starts executing the code in
>> cbBedList_Click!   This generates an error because the cbBedList.index
>> value isn't set, since it wasn't actually clicked.  If I remark out the
>> contents of the Click event, the Populate routine finishes, although I
>> still see the debug statement from line 169.  If I remark out everything
>> from 168-173, it still runs fine (although obviously I don't get click
>> events handled for the combo-box any longer!).  I'm pulling my hair
>> out.  The stack backtrace shows:
>>
>> FMain.cbBedList_Click.169
>> (native code)
>> FMain.Populate_cbBedList.178
>> FMain.Form_Open.26
>>
>> Setting a breakpoint at 178 and single-stepping shows exactly what the
>> backtrace does; the next line to be executed after 178 is 169!  ANY
>> ideas???  Please?
>>
>> ===
>>
>>
>> 168 PUBLIC SUB cbBedList_Click()
>> 169 DEBUG "We're in cbBedList_Click()!"
>> 170 '  BedNum = BedList[cbBedList.index + 1]
>> 171 '  DrawPlots($db, BedNum)
>> 172
>> 173 END
>> 174
>> 175 PUBLIC SUB Populate_cbBedList()
>> 176  DIM sql AS String
>> 177  'populate the bed selection listbox
>> 178  cbBedList.Clear
>> 179  sql = "select bedname, bednum from Beds"
>> 180 $res = $db.Exec(sql)
>> 181  DEBUG "$res.Count=" & $res.Count
>> 182  FOR EACH $res
>> 183    DEBUG "$res!BedName=" & $res!BedName
>> 184    cbBedList.Add($res!BedName)
>> 185    DEBUG "cbBedList.count=" & cbBedList.Count
>> 186    DEBUG "$res!BedNum=" & $res!BedNum
>> 187    BedList[cbBedList.count] = $res!BedNum
>> 188  NEXT
>> 189 END
>>
>>     
>
> Salut Bill,
>
> first question  : which gambas 2 or 3 ?
> second question : did you update that gambas ?
> third question : did you try to make a ALT-F7 (compile all) in the IDE ?
>
> there was said something about fired event by code, look in the archive.
>
> As workaround, you can set a bIsPopulate which is set to FALSE between
> line 177 - 178 and to TRUE  after the Next.
>
> And in cbBedList_Click you don't do anything  if NOT bIsPopulate .
>
>   
Gambas 2.7, gb.gui, Ubuntu Linux  2.6.27-16-generic, Gnome 2.24.1
I'm not sure what you mean by "update" gambas.  To what?  I tried 
"compile all" because I'd been cutting and pasting code around and 
thought it might be confused about locations in the compiled code, but 
it didn't seem to help.  Thanks for the workaround suggestion; I'll keep 
it in mind in case I can't resolve this problem. 

-Bill



More information about the User mailing list