1. win32lib ver .57 Modification & bug fix
- Posted by jordah ferguson <jorfergie03 at yahoo.com> Apr 08, 2002
- 410 views
hi, i was trying to use this function getLVSelected text() and it kept on crashing, it kept on telling me "subscript 0 is out of bounds reading from a sequence of length 6" so i decided to check win32lib out and found out this ---************************************************************************************************* ----code from win32lib ver 57 global function getLVItemText(integer id,integer item,integer subitem) sequence text text="" if item>0 and item<=length(lvitem_data) and subitem>=0 and subitem<=length(lvitem_data[item][2]) and id=lvitem_owner[item] then text=peek_string(lvitem_data[item][2][subitem][1]) end if return text end function ----------------------------------- global function getLVSelectedText(integer id) sequence text text=getLVSelected(id) for i=1 to length(text)do text[i]=getLVItemText(id,text[i],0)---//This was the cause of error. The subitem Zero end for return text end function --**************END OF CODE FROM WIN32LIB after seeing the cause of error i replaced getLVSelectedText(integer id) and getLVItemText() with this that worked just fine.!!! --MOD: Jordah Ferguson 7/4/2002 global function getLVItemText(integer id,integer item,integer subitem) sequence text,out_put out_put = {} text="" if item>0 and item<=length(lvitem_data) and subitem>=0 and subitem<=length(lvitem_data[item][2]) and id=lvitem_owner[item] then for i = 1 to subitem by 1 do text=peek_string(lvitem_data[item][2][i][1]) out_put = out_put&{text} end for end if return out_put end function --END MOD JOrdah Ferguson 7/4/2002 --MOD: Jordah Ferguson 7/4/2002 global function getLVSelectedText(integer id) sequence text text=getLVSelected(id) for i=1 to length(text)do ext[i]=getLVItemText(id,text[i],length(lvitem_data[text[i]][2]))--//area of correction end for return text end function --END MOD JOrdah Ferguson 7/4/2002 Well the above modifications return to me, the proper results when i call getLVSelectedText(). It maybe my system and not win32lib but my bets is that this was a bug in win32lib cause text[i]=getLVItemText(id,text[i],0) --is a bit too logical Please any one out there inform me if this is correct or it is just an illusion. Jordah Ferguson BEWARE! the above routines change the results of some functions such as getLVAllText(). I have posed them to correct a bug thats all. --Processed and saved using: Cirrus Mail ver 0.2a
2. Re: win32lib ver .57 Modification & bug fix
- Posted by Derek Parnell <ddparnell at bigpond.com> Apr 08, 2002
- 404 views
Over the last couple of days, I have been rewritting the ListView routines. I'm almost finished so I won't bother checking your correction as I've totally changed most of the routines anyway. I'll post an update in the next day or so for you to check out. ----------- Derek. ----- Original Message ----- From: "jordah ferguson" <jorfergie03 at yahoo.com> To: "EUforum" <EUforum at topica.com> Subject: win32lib ver .57 Modification & bug fix > > > hi, > i was trying to use this function getLVSelected text() and it kept on > crashing, it kept on telling me "subscript 0 > is out of bounds reading from a sequence of length 6" so i decided to > check win32lib out and found out this > ---*********************************************************************** ************************** > > ----code from win32lib ver 57 > global function getLVItemText(integer id,integer item,integer subitem) > sequence text > text="" > if item>0 and item<=length(lvitem_data) > and subitem>=0 and subitem<=length(lvitem_data[item][2]) > and id=lvitem_owner[item] > then > text=peek_string(lvitem_data[item][2][subitem][1]) > end if > return text > end function > ----------------------------------- > global function getLVSelectedText(integer id) > sequence text > text=getLVSelected(id) > for i=1 to length(text)do > text[i]=getLVItemText(id,text[i],0)---//This was the cause of error. The > subitem Zero > end for > return text > end function > --**************END OF CODE FROM WIN32LIB > > after seeing the cause of error i replaced getLVSelectedText(integer id) > and getLVItemText() > with this that worked just fine.!!! > > --MOD: Jordah Ferguson 7/4/2002 > global function getLVItemText(integer id,integer item,integer subitem) > sequence text,out_put > out_put = {} > text="" > if item>0 and item<=length(lvitem_data) > and subitem>=0 and subitem<=length(lvitem_data[item][2]) > and id=lvitem_owner[item] > then > for i = 1 to subitem by 1 do > text=peek_string(lvitem_data[item][2][i][1]) > out_put = out_put&{text} > end for > end if > return out_put > end function > --END MOD JOrdah Ferguson 7/4/2002 > > --MOD: Jordah Ferguson 7/4/2002 > global function getLVSelectedText(integer id) > sequence text > text=getLVSelected(id) > for i=1 to length(text)do > ext[i]=getLVItemText(id,text[i],length(lvitem_data[text[i]][2]))--//area > of correction > end for > return text > end function > --END MOD JOrdah Ferguson 7/4/2002 > > Well the above modifications return to me, the proper results when i > call getLVSelectedText(). It maybe my > system and not win32lib but my bets is that this was a bug in win32lib > cause > text[i]=getLVItemText(id,text[i],0) --is a bit too logical > > Please any one out there inform me if this is correct or it is just an > illusion. > > Jordah Ferguson > > BEWARE! > the above routines change the results of some functions such as > getLVAllText(). I have posed them to correct > a bug thats all. > > --Processed and saved using: Cirrus Mail ver 0.2a > > > >