[DUG] Is it a bug in latest version of Delphi? - Solution
Jolyon Smith
jsmith at deltics.co.nz
Wed Feb 24 10:33:19 NZDT 2010
There was no change in the “Windows standard”. It’s a simple error in some poorly implemented error handling code added to the VCL at some point (subsequently fixed in combo boxes, but not listboxes – as of D2006).
You needn’t have waded through all the replies to find that the answer was provided. The answer came very quickly… what then followed was a great deal of pointless and diverting/misleading speculation as to other possible explanations that disregarded the fact that the answer was very quickly apparent from an inspection of the VCL source.
FYI - Your “multiple by 2” solution worked because it transformed a stored value of “-1” into “-2”, which then avoided the collision between that value (-1) and the Windows “error” code and thus avoided the problem caused by the overly-helpful and incorrectly implemented error handling code in the VCL.
From: delphi-bounces at delphi.org.nz [mailto:delphi-bounces at delphi.org.nz] On Behalf Of Rohit Gupta
Sent: Wednesday, 24 February 2010 9:55 a.m.
To: NZ Borland Developers Group - Delphi List
Subject: Re: [DUG] Is it a bug in latest version of Delphi? - Solution
Sinu,
I dont know if its been answered satisfactorily. There are too many replies to wade through. I recall that along the way Windows standard changed from 0 being a null pointer to -1. I had to change some of my code in stringlist to work. I think my solution was to just multiply by 2 and then store it. Found my note - it happened in 2003. My conclusion now, is that its a combination of windows version/updates and version of Delphi that causes this issue.
Rohit
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.htm@Middle?> Image removed by sender.
_____
_______________________________________________
NZ Borland Developers Group - Delphi mailing list
Post: delphi at delphi.org.nz
Admin: http://delphi.org.nz/mailman/listinfo/delphi
Unsubscribe: send an email to delphi-request at delphi.org.nz with Subject: unsubscribe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20100224/62131b67/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 823 bytes
Desc: not available
Url : http://listserver.123.net.nz/pipermail/delphi/attachments/20100224/62131b67/attachment.jpe
More information about the Delphi
mailing list