Abfrage auf UNGERADE zahlen

3. August 2006 08:51

Hallo "Leidgenossen"


Frage: gibts da nen befehl den ich nicht finden kann (weder in der Hilfe) noch in anderen foren, ODER muss ich mühselig (z.b. n CASE machen) um diese Situation zu handeln?


mfg
dante

3. August 2006 09:12

Hier mal eine kleine Funktion aus dem Stehgreif:
Code:
IsOdd(Value : Integer) : Boolean
TempTextVar := FORMAT(Value);
EXIT(TempTextVar[STRLEN(TempTextVar)] IN ['1','3','5','7','9']);
Wenn der übergebene (Integer-)Wert ungerade ist, liefert die Funktion TRUE zurück.

3. August 2006 14:49

Nur mal eine Idee:

Wenn ich eine ungerade Zahl durch 2 teile, kommt immer eine Zahl mit einer Dezimalstelle heraus:

Wenn ich also jede Zahl durch 2 teile, diesen Wert in einer Variable: (V1) abspeichere und ihn dann auf eine Ganzzahl runde (V2), dann kann ich die beiden vergleichen. Wenn V1 = V2 ist, dann habe ich eine gerade Zahl:

Code:
V1 := Wert / 2;
V2 := ROUND(V1,1);

IF V1 = V2 THEN
  Ergebnis := FALSE
ELSE
  Ergebnis := TRUE;
Zuletzt geändert von NavHummel am 3. August 2006 15:01, insgesamt 1-mal geändert.

3. August 2006 14:54

Geht so auch:

IF ( i MOD 2 <>0) AND ( i > 1) THEN
CurrReport.NEWPAGE

i als Zähler