Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Konstantenausdruck verletzt untere Grenzen (https://www.delphipraxis.net/56444-konstantenausdruck-verletzt-untere-grenzen.html)

DelphiSourcer 5. Nov 2005 17:43


Konstantenausdruck verletzt untere Grenzen
 
Hallo!

Delphi-Quellcode:
  FHandle := Windows.CreateWindowEx(
    0,         
    'TestApp',      
    'Main Window',   
    FWindowStyle,      
    CW_USEDEFAULT,         // horizontale Position
    CW_USEDEFAULT,         // vertikale Position
    CW_USEDEFAULT,         // Breite
    CW_USEDEFAULT,         // Höhe
    ParentHandle,      
    0,         
    MainInstance,      
    Self);
Die Warnung tritt bei den Konstanten CW_USEDEFAULT auf. Warum verletzt der Konstantenausdruck untere Grenzen. CW_USEDEFAULT ist doch eine in der Unit Windows vordefinierte Konstante und CreateWindowEx ist eine ganz normale API Funktion??????

Was will mir der Compiler hier sagen?

Delphi Sourcer

x000x 5. Nov 2005 18:03

Re: Konstantenausdruck verletzt untere Grenzen
 
Moin moin,

die funktion erwartet an den Stellen die Übergabeparameter als Integer.
Der Wertebereich von integer geht von -2147483648 bis 2147483647...
Die Konstante CW_USEDEFAULT steht für $80000000 = 2147483648, sprich, sie
liegt nicht mehr im Bereich eines Integers. Mit Integer(CW_USEDEFAULT) wird die Warnung verschwinden...

DelphiSourcer 5. Nov 2005 23:29

Re: Konstantenausdruck verletzt untere Grenzen
 
Halloooo x000x!

Ich danke Dir wie verrückt. Werde meinen Quelltext entsprechend ändern!

Schönes Wochenende wünscht Dir

Delphi Sourcer

semo 2. Jun 2007 22:37

Re: Konstantenausdruck verletzt untere Grenzen
 
ist es denn nicht besser gleich den entsprechenden wertebreich, nämlich int64, zu verwenden anstatt den typ zu casten?

3_of_8 2. Jun 2007 22:41

Re: Konstantenausdruck verletzt untere Grenzen
 
Nein, weil diese Funktion einen Integer erwartet und keinen Int64? Und weil das sowieso sinnlos ist, weil man diesen größeren Bereich gar nicht braucht?

semo 2. Jun 2007 22:46

Re: Konstantenausdruck verletzt untere Grenzen
 
ok in diesem fall.

ich habe gerade den fall das ich { IShellFolder.GetAttributesOf flags } aus der unit shlObj.pas in einer function übergebe.
da wäre doch dann int64 angebracht als datentyp oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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