| |
| 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;
|
|
| Hits/month |
2,500,000+ |
Downloads (Since May 2000) |
7,393,709 |
| Total Files |
6,023 |
| Forum msgs |
7,670 |
| Articles/FAQs |
70+/900+ |
Top Selling Software at Amazon
|