Domino 9 und frühere Versionen > ND7: Entwicklung

Gibt es "minus Null"?

(1/1)

koehlerbv:
Ich möchte auch mal wieder eine Frage haben. Vermutlich (so hoffe ich zumindest) habe ich schlicht ein Brett vor dem Kopf, aber ... schaut einfach mal selber:

Folgender Code solle in eine Schaltfläche kopiert werden - er soll den ersten Montag der gegebenen Kalenderwoche berechnen.

--- Code: ---_FirstDayOfYear := @Date (Year; 1; 1);
WeekNo := 7;

REM {minus null in the following term is nessecary!!!};
WeekNoMonday := @Adjust (_FirstDayOfYear; 0; 0; @Subset (@Subset (1 : [u][b][color=red]-0[/color][/b][/u] : -1 : -2 : -3 : 3 : 2; @Weekday (_FirstDayOfYear)); -1)  + ((WeekNo - 1) * 7); 0; 0; 0);

@Prompt ([Ok]; "Ergebnis"; @Text (WeekNoMonday))
--- Ende Code ---

Mit "-0" tut das. "0" oder "+0" - na, schaut selber. Kann mir das jemand erklären und mein Brett vor dem Kopf entfernen?

Bernhard

PS: KW 7 startet nach bei uns gebräuchlichem ISO-Standard am 15.02.2010.

PPS: Dr Code ergibt beim mir beim Entfernen des Vorzeichens vor der Null identische Ergebnisse unter R5, 6, 7 und 8. Das Posting im 7er Forum ist daher rein willkürlich.

eknori:
in der Tat; verblüffend. Kann ich aber auch nicht erklären.

Werner Götz:
Hallo Bernhard, das war wirklich eine knifflige Frage, aber die Antwort ist umso einfacher:

Der Listentrenner ":" kommt bei der Auswertung vor dem Minuszeichen und so wird aus der Liste
1 : -0 : -1 : -2 : -3 : 3 : 2
die Liste
1 : 0 : 1 : (-2) : 3 : 3 : 2

denn die Ausgangsliste ist anscheinend so zu lesen:
1 : -(0 : -(1 : -(2 : -(3 : 3 : 2))))

Die Formel (ob diese nun so aber richtig ist habe ich nicht geprüft) sollte also um der besseren Lesbarkeit willen wie folgt verwendet werden:

--- Code: ---@Adjust (_FirstDayOfYear; 0; 0; @Subset (@Subset (1 : 0 : 1 : (-2) : 3 : 3 : 2; @Weekday (_FirstDayOfYear)); -1)  + ((WeekNo - 1) * 7); 0; 0; 0)

--- Ende Code ---

Schönes Wochenende!
-Werner

koehlerbv:
Vielen Dank, Werner. So ganz geht mir aber die Beeinflussung der Listenverarbeitung durch das Vorzeichen noch nicht ein. Der Groschen wird schon noch fallen  ;)

Korrekt wäre dann folgende Formel:

--- Code: ---_FirstDayOfYear := @Date (Year; 1; 1);
WeekNo := 7;

WeekNoMonday := @Adjust (_FirstDayOfYear; 0; 0; @Subset (@Subset (1 : 0 : (-1) : (-2) : (-3) : 3 : 2; @Weekday (_FirstDayOfYear)); -1)  + ((WeekNo - 1) * 7); 0; 0; 0);

@Prompt ([Ok]; "Ergebnis"; @Text (WeekNoMonday))
--- Ende Code ---

Es sind also auch die anderen negativen Werte zu klammern.

Bernhard

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln