Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prblem mit Komponenteninstallation in Delphi XE2 (https://www.delphipraxis.net/166568-prblem-mit-komponenteninstallation-delphi-xe2.html)

The_Unknown 19. Feb 2012 11:27

Prblem mit Komponenteninstallation in Delphi XE2
 
Hallo,

ich habe vorhin versucht, eine Komponente, die ich in Delphi 2010 immer problemlos nutzen konnte, in Delphi XE2 zu installieren. Leider bekomme ich dabei folgende Fehlermeldung:

Zitat:

Konstantenausdruck verletzt untere Grenzen
und zwar in folgender Funktion beim Aufruf von Perform():

Code:
procedure TXPMenuToolBar.CMMouseLeave(var Message: TMessage);
begin
  if NeedHotTrackFix and (Message.LParam <> 0) then
    Perform(TB_SETHOTITEM, -1, 0);
  inherited;
end;
Da ich länger nichts in Delphi gemacht habe, bin ich etwas ratlos. Vielleicht sieht ja jemand auf Anhieb, wo der Fehler ist?

Ciao The_Unknown

himitsu 19. Feb 2012 12:01

AW: Problem mit Komponenteninstallation in Delphi XE2
 
Steht da auch noch was von "wird erweitert"?

Vergleich doch einfach mal die Werte von TB_SETHOTITEM und -1, mit den Wertebereichen der zugehörigen Parameter.

Uwe Raabe 19. Feb 2012 13:14

AW: Prblem mit Komponenteninstallation in Delphi XE2
 
Bei XE2 ist der zweite Parameter von Perform als WParam (=NativeUInt) deklariert. Damit fällt -1 aus dem erlaubten Range - obwohl Microsoft diesen Wert explizit zulässt. Hier schlägt also Pascal's strenge Typisierung zu, die man leider nur durch eien Cast umgehen kann:

Delphi-Quellcode:
 Perform(TB_SETHOTITEM, WParam(-1), 0);

The_Unknown 19. Feb 2012 15:11

AW: Prblem mit Komponenteninstallation in Delphi XE2
 
Das ist ja blöd. Naja, was solls, mit der Änderung funzte es dann ;) Dankesehr!!

himitsu 19. Feb 2012 15:14

AW: Pr[ADD]o[/ADD]blem mit Komponenteninstallation in Delphi XE2
 
Wobei Delphi nicht ganz so streng ist.
Das war ja "nur" eine Warnung.

Delphi macht dort einen impliziten Cast (wie bei AnsiString zu Strng/UnicodeString), welchen es nur "benennt", damit man sich nicht wundert.

Wenn aber noch sowas wie "wird erweitert" mit in der Meldung auftaucht, dann sollte man noch besser aufpassen, da dort nicht nur gecastet, sondern auch noch der Wert verändert wird.

Uwe Raabe 19. Feb 2012 15:51

AW: Pr[ADD]o[/ADD]blem mit Komponenteninstallation in Delphi XE2
 
Zitat:

Zitat von himitsu (Beitrag 1151871)
Wobei Delphi nicht ganz so streng ist.
Das war ja "nur" eine Warnung.

[DCC Fehler] Unit127.pas(55): E1012 Konstantenausdruck verletzt untere Grenzen

Das ist keine Warnung - das ist ein Fehler und es kompiliert nicht!

The_Unknown 19. Feb 2012 16:01

AW: Prblem mit Komponenteninstallation in Delphi XE2
 
Jup, kann ich bestätigen, es war ein Fehler.

himitsu 19. Feb 2012 16:10

AW: Prblem mit Komponenteninstallation in Delphi XE2
 
Hmmm? :gruebel:
Gut, ich hatte letztens ein Problem mit der oberen Grenze, aber dort war das nur eine Warnung und ansonsten funktionierte alles wie gewohnt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:47 Uhr.

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