Delphi32.com - Home!
| Home/News | Downloads | Forums | D32 Magazine | Resources | Info and Facts |  
 
 Bitwise AND evaluates different under Delphi 3


Under Delphi 3 (all versions), on some occasions, bitwise arithmetic using "AND" against integers does not always render the same results as Delphi 2. How can I get around this?   

    This is a known problem, where in certain circumstances, the compiler produces a sign extended negative result in a bitwise "AND" operation. The solution is to compare the result against zero, instead of comparing the result as being greater than zero. The following example demonstrates both the problem and the solution.

    procedure TForm .Button Click(Sender: TObject);
    var
      IntVal : Integer;
    begin
      IntVal :=  28 +  ;
      if (IntVal and  28) > 0 then
        ShowMessage('This never executes!');
    end;
    procedure TForm .Button2Click(Sender: TObject);
    var
      IntVal : Integer;
    begin
      IntVal :=  28 +  ;
      if (IntVal and  28) <> 0 then
        ShowMessage('This is correct!');
    end;
    

     



  << Previous Faq     Complete List     Next Faq >>  



 
 Hits/month  2,500,000+ 
 Downloads
 (Since May 2000)
 7,393,709 
 Total Files  6,023 
 Forum msgs  7,670 
 Articles/FAQs  70+/900+ 
Kylix
Tips n Tricks
FAQs
Knowledge Base
Bug Listings
Articles
Books
Newsgroups
Links
Submissions
Testimonials
Advertising
Contact Us
About Us
Search Amazon:
Top Selling Software at Amazon

| Home/News | Downloads | Forums | Resources | Info and Facts | Testimonials |
  Site Search:
 


Comments/Problems: Webmaster@delphi32.com
Copyright © 1998-2006, Delphi32.com. All rights reserved.
Terms of Use