Pointers and TObject are unsigned integers (cardinals) not (integer) casting to -1 is converting to the cardinal equvalent, which when pulled back is making an out of bounds integer..
just a guess and it probably has something to do with the compiler typecasting rules you have designated. On Tue, Feb 16, 2010 at 11:41 AM, Ross Levis <r...@stationplaylist.com>wrote: > I often use the Object property of listbox and TStringList items to store > pointers, or just numbers for array subscripts. I don't see any problem > doing that as it can save a lot of time. It is just an integer variable > internally. I seem to remember coming across the same problem once (D7) and > had to use -2 instead of -1 to indicate no value or something of that > nature. I'm not sure why. The integer always exists and defaults to a > value of 0. > > Ross. > > -----Original Message----- > From: delphi-boun...@delphi.org.nz [mailto:delphi-boun...@delphi.org.nz] > On Behalf Of Alister Christie > Sent: Tuesday, 16 February 2010 10:20 a.m. > To: NZ Borland Developers Group - Delphi List > Subject: Re: [DUG] Is it a bug in latest version of Delphi? > > I can confirm that > ListBox1.Items.AddObject('foo', TObject(-1)); > ShowMessage(IntToStr(Integer(ListBox1.Items.Objects[0]))); > gives an error but > ListBox1.Items.AddObject('foo', TObject(0)); > ShowMessage(IntToStr(Integer(ListBox1.Items.Objects[0]))); > does not > > I think casting -1 to an object is probably not the best idea - what > memory location does this point to anyway? 0xFFFFFFFF? > > Alister Christie > Computers for People > Ph: 04 471 1849 Fax: 04 471 1266 > http://www.salespartner.co.nz > PO Box 13085 > Johnsonville > Wellington > > > > sinu sudhakaran wrote: > > Hi all, > > > > I came across a strange bug(???) in latest versions of Delphi. > > > > Have a look at the following code. > > > > procedure TForm1.Button1Click(Sender: TObject); > > var > > i : integer; > > begin > > ComboBox1.Clear; > > ComboBox1.Items.AddObject('All Locations', TObject(-1)); > > ComboBox1.Items.AddObject('Only this Location', TObject(0)); > > ComboBox1.Items.AddObject(Test Location', TObject(1)); > > > > i := Integer(ComboBox1.Items.Objects[0]); > > showmessage(inttostr(i)); > > end; > > > > When I tried to run this code in Delphi 6 and Delphi 2007 , I am > > getting List Index out of bounds[0] error in Showmessage. When I tried > > -2, -3, -4… instead of -1 object , I got the proper output without any > > List index out of bounds error. Also I am getting -1 without any error > > when I tried this code in Delphi 3. > > > > Is it a bug in latest version of Delphi ? Any help is appreciated. > > > > Thank you > > > > Regards, > > Sinu > > > > < > http://sigads.rediff.com/RealMedia/ads/click_nx.ads/www.rediffmail.com/signatureline....@middle > ?> > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > NZ Borland Developers Group - Delphi mailing list > > Post: delphi@delphi.org.nz > > Admin: http://delphi.org.nz/mailman/listinfo/delphi > > Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: > unsubscribe > _______________________________________________ > NZ Borland Developers Group - Delphi mailing list > Post: delphi@delphi.org.nz > Admin: http://delphi.org.nz/mailman/listinfo/delphi > Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: > unsubscribe > > > _______________________________________________ > NZ Borland Developers Group - Delphi mailing list > Post: delphi@delphi.org.nz > Admin: http://delphi.org.nz/mailman/listinfo/delphi > Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: > unsubscribe > -- Kyley Harris Harris Software +64-21-671-821
_______________________________________________ NZ Borland Developers Group - Delphi mailing list Post: delphi@delphi.org.nz Admin: http://delphi.org.nz/mailman/listinfo/delphi Unsubscribe: send an email to delphi-requ...@delphi.org.nz with Subject: unsubscribe