![]() |
Re: Probleme bei SerienTerminen von einem Kalender
ja will ich xD
falls ihr mich falsch verstanden habt: sorry für die formulierung danke für eure hilfe besser ? ^^ |
Re: Probleme bei SerienTerminen von einem Kalender
@DeddyH
Wie rufst Du Funktion richtig auf? Ich erzeuge hier immer Fehler bei der Parameterübergabe. Gib mal bitte ein Beispiel für diesen Monat mfg Wolfgang |
Re: Probleme bei SerienTerminen von einem Kalender
Delphi-Quellcode:
ShowMessage(DateToStr(LastDayOfWeekOfMonth(2009,7,DayMonday)));
|
Re: Probleme bei SerienTerminen von einem Kalender
Danke, funzt,
hatte DateToStr vergessen! Zitat:
Wolfgang |
Re: Probleme bei SerienTerminen von einem Kalender
hey,
hat einer von euch den algo verstanden ? also weiß wieso man das so machen muss ? kann mir das einer erklären ? ich habe jetzt nämlich eine code der funktioniert aber ich weis nicht wieso... also ich verstehe die logik dahinter nicht ... das wurmt mich könnte mir jemand den algo erklären ? |
Re: Probleme bei SerienTerminen von einem Kalender
|
Re: Probleme bei SerienTerminen von einem Kalender
@Wolfgang
Die Erklärung erschließt sich eher aus der vorherigen Diskussion ![]() 1. Erzeuge ein Datum mit dem Ersten des aktuellen Monats:
Delphi-Quellcode:
2. Mache daraus den Ersten des nächsten Monats:
temp := EncodeDateTime(year,month,1,0,0,0,0);
Delphi-Quellcode:
3. Gehe davon so viele Tage zurück (!), bis der gewünschte Wochentag erreicht wird:
temp := IncMonth(temp);
Delphi-Quellcode:
4. Berechne x möglichst schnell. Machen wir es an einem Beispiel deutlich:
Result := IncDay(temp, x); // mit negativem Integer x
a. Suche den letzten Donnerstag im Juli 2009, also für temp = 01.08.2009. b. Das ist ein Samstag/Sonnabend, also:
Delphi-Quellcode:
c. Gesucht wird DayOfWeek.Donnerstag, also 3 bei DeddyH's Definition
x := DayOfTheWeek(temp); // x = 5 (nur geraten, weil in meiner Doku DayOfTheWeek fehlt)
d. Für modulo sind vorzugsweise positive Zahlen zu verwenden, also Addition von 7, also:
Delphi-Quellcode:
e. Es dürfen nur Zahlen von 0 bis 6 herauskommen, also modulo:
x := 3 - x + 7; // x = 5
Delphi-Quellcode:
f. Wenn ich 5 Tage weitergehe, bekomme ich den nächsten Donnerstag, ich will aber den vorherigen:
x := x mod 7; // x = 5
Delphi-Quellcode:
Das unter 3 eingesetzt gibt das Ergebnis.
x := x - 7; // x = -2
Schönen Sonntag! Jürgen |
Re: Probleme bei SerienTerminen von einem Kalender
@Jürgen
Vielen Dank für die perfekte Erklärung zur Frage von gangs-taas . Ich hatte schon vermutet, daß so ein Zweizeiler nur aus guter Teamarbeit entstanden sein kann. Ich habe jetzt die von Dir angegebene Quelle aufmerksam studiert und nachvollzogen, wie funktionierender Code perfekt optimiert wird. Diskutieren könnte man nur noch über Namensgebung der Funktion. Wie man wieder sieht: Eine Frage an die DP erspart viel Grübelei! Auch schönen Sonntag Wolfgang |
Re: Probleme bei SerienTerminen von einem Kalender
vielen dank
jetzt hab ich es auch vestanden xD |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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