![]() |
Konstantenausdruck verletzt untere Grenze
Servus erstma ;)
Hab eine Prozedur geschrieben, die prüft ob die angegebene Auflösungsbreite einen gültigen Wert (640, 720, 800, 1024, 1152 oder 1280) hat und ihn dann dem Feld zuweist. Wenn der Wert ungültig ist soll die Breite 800 verwendet werden. Mein Code sieht folgendermaßen aus:
Delphi-Quellcode:
Mein Delphi 7 Personal meckert dann:
procedure TSettings.SetResWidth(Value: Integer);
begin if Value in [640, 720, 800, 1024, 1152, 1280] then FResWidth := Value else FResWidth := 800; end; [Fehler] Settings.pas(180): Konstantenausdruck verletzt untere Grenze Ich verstehe nicht warum :?!? thx & cya :) |
Re: Konstantenausdruck verletzt untere Grenze
Moin Magic Creator,
in einer Menge darf kein Element den Wert 255 übersteigen, und das tut in Deinem Beispiel jeder. Als Workaround könntest Du Dir einen Aufzählungstypen erstellen
Delphi-Quellcode:
und eine Konstantentabelle
type
TRes = (res640,res800, ... );
Delphi-Quellcode:
so dass Du die Auflösung auswählen, und dann den Wert direkt aus der Tabelle auslesen kannst.
const
_iRes : array [TRes] of integer = (640,800,...); |
Re: Konstantenausdruck verletzt untere Grenze
Ah :) thx für die schnelle Antwort!
cya :) |
Re: Konstantenausdruck verletzt untere Grenze
ich habe die selbe Fehlermeldung, nur dass bei mir Delphi 3 bei folgendem Code meckert:
Delphi-Quellcode:
wobei Data so definiert ist:
i := SizeOf(Data.mappack);
Delphi-Quellcode:
ich habe auch schon versucht, dass so zu umgehen, aber da kommt wieder die Fehlermeldung:
type
TBBBobject = record Left: Word; Top: Word; Value: Byte; end; TBBBdata = record version: ShortString; mappack: ShortString; date: TDateTime; resolution: Word; width: Word; height: Word; number: Word; objects: array[1..65535] of TBBBobject; end;
Delphi-Quellcode:
s := Data.mappack;
i := SizeOf(s); |
Re: Konstantenausdruck verletzt untere Grenze
Wozu verwendest du überhaupt SizeOf() auf einen ShortString? SizeOf() liefert dir bei einem ShortString eigentlich immer 255 zurück und nicht die Länge der gespeicherten Zeichenkette. Wenn du letzteres willst, dann nutze Length() und nicht SizeOf()...
|
Re: Konstantenausdruck verletzt untere Grenze
Willkommen in der Delphi-PRAXiS, Tiuri!
Hast du die Variable i eventuell mit Hilfe eines Aufzählungstyps vereinbart?
Delphi-Quellcode:
Das würde den Fehler erklären, da die Funktion SizeOf auch den Wert 0 liefern kann, der aber in dieser Variablen nicht mehr abgespeichert werden könnte. Eine Deklaration wie
var
i : 1..65535;
Delphi-Quellcode:
verhindert in diesem Fall die Fehlermeldung.
var
i : Integer; // oder Cardinal Gruß Hawkeye |
Re: Konstantenausdruck verletzt untere Grenze
danke erstmal für die schnelle antwort und wie ihr gemerkt habt, ist das jetzt mein erster beitrag.
also, i ist als Byte deklariert, ich hab auch mal Integer probiert, aber daran lag es nicht. Es lag tatsächlich am ShortString. Ich habe einfach alle ShortStrings durch Strings ersetzt und dann hat es funktioniert. Danke!! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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 by Thomas Breitkreuz