Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi shl - Bug in Delphi? (https://www.delphipraxis.net/32001-shl-bug-delphi.html)

scp 17. Okt 2004 02:22


shl - Bug in Delphi?
 
Warum liefern diese zwei Bedingungen verschiedene Ergebnisse?
Delphi-Quellcode:
var
  edx : DWORD;
begin
  edx := $C1C3FBFF;
  if (edx and (1 shl 31) ) = (1 shl 31)  then
    ShowMessage('shl: ja');
  if (edx and $80000000   ) = $80000000    then
    ShowMessage('hex: ja');
end;
(1 shl 31) entspricht doch $80000000 oder sehe ich da was falsch? Mit (1 shl 30) und $40000000 und allen anderen < 31 geht es doch auch.

Christian Seehase 17. Okt 2004 02:38

Re: shl - Bug in Delphi?
 
Moin scp,

wenn Du es nicht ausdrücklich angibst, wird bei shl, wie bei fast allen anderen Operatoren, mit integer gearbeitet, also mit Vorzeichen.

So geht's:

Code:
if (edx and [color=red]DWORD[/color](1 shl 31) ) = [color=red]DWORD[/color](1 shl 31)  then
Ausserdem hast Du wohl die Warnungen vom Compiler überlesen ;-)

scp 17. Okt 2004 10:55

Re: shl - Bug in Delphi?
 
Doch so ein trivialer Fehler :-D Na dann belasse ich es bei dem $80000000, sieht eh besser aus.

Christian Seehase 17. Okt 2004 10:58

Re: shl - Bug in Delphi?
 
Moin scp,

Zitat:

Zitat von scp
Na dann belasse ich es bei dem $80000000, sieht eh besser aus.

wenn es eh' immer ein fester Wert ist, dann ist es auch von der Performance her von Vorteil (wenn die Stelle öfter verwendet wird).


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz