AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Konstantenausdruck verletzt untere Grenze
Thema durchsuchen
Ansicht
Themen-Optionen

Konstantenausdruck verletzt untere Grenze

Ein Thema von MagiC_Creator · begonnen am 11. Apr 2004 · letzter Beitrag vom 22. Apr 2007
Antwort Antwort
MagiC_Creator

Registriert seit: 4. Apr 2004
Ort: Oberpfalz ;)
4 Beiträge
 
Delphi 7 Personal
 
#1

Konstantenausdruck verletzt untere Grenze

  Alt 11. Apr 2004, 00:25
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:
procedure TSettings.SetResWidth(Value: Integer);
begin
  if Value in [640, 720, 800, 1024, 1152, 1280] then FResWidth := Value
  else FResWidth := 800;
end;
Mein Delphi 7 Personal meckert dann:
[Fehler] Settings.pas(180): Konstantenausdruck verletzt untere Grenze

Ich verstehe nicht warum !?

thx & cya
dumm di dumm ^^
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Konstantenausdruck verletzt untere Grenze

  Alt 11. Apr 2004, 00:44
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:
type
  TRes = (res640,res800, ... );
und eine Konstantentabelle

Delphi-Quellcode:
const
  _iRes : array [TRes] of integer = (640,800,...);
so dass Du die Auflösung auswählen, und dann den Wert direkt aus der Tabelle auslesen kannst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
MagiC_Creator

Registriert seit: 4. Apr 2004
Ort: Oberpfalz ;)
4 Beiträge
 
Delphi 7 Personal
 
#3

Re: Konstantenausdruck verletzt untere Grenze

  Alt 11. Apr 2004, 00:53
Ah thx für die schnelle Antwort!

cya
dumm di dumm ^^
  Mit Zitat antworten Zitat
Benutzerbild von Tiuri
Tiuri

Registriert seit: 22. Sep 2006
Ort: Celle
38 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Konstantenausdruck verletzt untere Grenze

  Alt 22. Apr 2007, 12:22
ich habe die selbe Fehlermeldung, nur dass bei mir Delphi 3 bei folgendem Code meckert:
i := SizeOf(Data.mappack); wobei Data so definiert ist:
Delphi-Quellcode:
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;
ich habe auch schon versucht, dass so zu umgehen, aber da kommt wieder die Fehlermeldung:
Delphi-Quellcode:
 s := Data.mappack;
 i := SizeOf(s);
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Konstantenausdruck verletzt untere Grenze

  Alt 22. Apr 2007, 13:04
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()...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Konstantenausdruck verletzt untere Grenze

  Alt 22. Apr 2007, 13:11
Willkommen in der Delphi-PRAXiS, Tiuri!

Hast du die Variable i eventuell mit Hilfe eines Aufzählungstyps vereinbart?

Delphi-Quellcode:
var
  i : 1..65535;
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

Delphi-Quellcode:
var
  i : Integer; // oder Cardinal
verhindert in diesem Fall die Fehlermeldung.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Tiuri
Tiuri

Registriert seit: 22. Sep 2006
Ort: Celle
38 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Konstantenausdruck verletzt untere Grenze

  Alt 22. Apr 2007, 16:59
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!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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