![]() |
Maximum eines Wertebereiches ermitteln
Hallo,
ich möchte aus einem Wertebereich den höchsten Wert ermittlen, aber wie?
Delphi-Quellcode:
Die function MaxIntValue aus Math.pas geht nicht mit Konstanten :-(const MONTH_DAY = [1..28]; VALUES = [1,50,3,5]; // so nun benötige ich eine function Highest(MONTH_DAY);// sollte 28 liefern Highest(VALUES);// sollte 50 liefern thx |
Re: Maximum eines Wertebereiches ermitteln
Da es ja Konstanten sind:
Delphi-Quellcode:
Ist doch eine ziemlich sinnlose Funktion, wenn das Ergebnis eh schon feststeht, oder?
const
HighestMonthDay = 28; HighestValues = 50; |
Re: Maximum eines Wertebereiches ermitteln
Nein, das ist NICHT sinnlos !!!
Bsp: Es wird eine Konstante deklariert, auf diese wird mehrmals in der implementierung zugegriffen. so nun haben die monate plötzlich 45 tage. In diesem Fall muss ich nur eine Konstante ändern und schon ist wieder alles in ordnung. |
Re: Maximum eines Wertebereiches ermitteln
Auch da brauchst keine Funktion. Vielleicht hilft ja das hier:
Delphi-Quellcode:
const
MONTH_DAY_MIN = 1; MONTH_DAY_MAX = 28; MONTH_DAY = [MONTH_DAY_MIN..MONTH_DAY_MAX]; VALUES_MAX = 50; VALUES = [1,VALUES_MAX,3,5]; |
Re: Maximum eines Wertebereiches ermitteln
Gut möglich, das es da etwas falsch verstehe, aber sollte der Wert einer Konstante nicht, wie der Name sagt, konstant sein? PI z.B. ist auch eine Konstante und kann deshalb nicht nach belieben geändert werden.
|
Re: Maximum eines Wertebereiches ermitteln
@angos: ja, so habe ich es im moment gelöst.
jedoch sollte es doch auch möglich sein aus einem "set of" den höchsten werden zu ermitteln.... @HeikoAdams: Prinzipiell korrekt, jedoch gibt es immer wieder Änderungungen, die nicht absehbahr sind z.b. von der Geschäftsführung, und dann sollte diese so schnell wie möglich umgesetzt werden. |
Re: Maximum eines Wertebereiches ermitteln
Zitat:
|
Re: Maximum eines Wertebereiches ermitteln
|
Re: Maximum eines Wertebereiches ermitteln
|
Re: Maximum eines Wertebereiches ermitteln
Delphi-Quellcode:
Stellst du dir das etwa so vor?
maximal := Values[Low(Values)];
for i := low(Values) to high(Values) do if maximal < Values[i] then maximal := Values[i]; |
Re: Maximum eines Wertebereiches ermitteln
Zitat:
Zitat:
|
Re: Maximum eines Wertebereiches ermitteln
Delphi-Quellcode:
Was sollte dann hier rauskommen? Ord('z')?
const testrange = ['a'..'z'];
|
Re: Maximum eines Wertebereiches ermitteln
Delphi-Quellcode:
i=255 ist nur ein beliebiger Wert, welcher auf viele SET passend gewählt sein sollte.
const MONTH_DAY = [1..28];
var i: Integer; begin i := 255; while (i >= 0) do if i in MONTH_DAY then break else Dec(i); ShowMessage(IntToStr(i)); end; korrekter wäre es so
Delphi-Quellcode:
Man könnte aber auch die RTTI bemühen, aber diese hab bis einschließlich D2009 'ne "Macke" und kommt mit SETs nicht klar, welche Lücken aufweisen, wie z.B. [1,3,5,50].
type TMONTH_DAY = 1..31;
const MONTH_DAY: Set of TMONTH_DAY = [1..28]; var i: TMONTH_DAY; begin i := High(TMONTH_DAY); while (i >= Low(TMONTH_DAY)) do if i in MONTH_DAY then break else Dec(i); ShowMessage(IntToStr(Ord(i))); end; In soeinem Fall gibt es in der RTTI keine Informationen über die Werte innerhalb des Arrays ... also absolut keine Inforationen (keine Namen und auch keine "Belegungsliste") |
Re: Maximum eines Wertebereiches ermitteln
Wenn man mit den etwas veränderten Definitionen
Delphi-Quellcode:
leben kann, sind die MONTH_DAY-Konstanten via Low(MONTH_DAY) und High(MONTH_DAY) verfügbar. Bei Values geht's nur mit MinIntValue(VALUES) und MaxIntValue(VALUES), also nicht konstant.
type
MONTH_DAY = 1..28; const VALUES : array[0..3] of integer = (1,50,3,5); |
Re: Maximum eines Wertebereiches ermitteln
Zitat:
Delphi-Quellcode:
if irgendeinwert in MONTH_DAY then bla;
|
Re: Maximum eines Wertebereiches ermitteln
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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