Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme bei SerienTerminen von einem Kalender (https://www.delphipraxis.net/137833-probleme-bei-serienterminen-von-einem-kalender.html)

gangs-taas 29. Jul 2009 21:46

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 ? ^^

Wolfgang Mix 30. Jul 2009 10:52

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

DeddyH 30. Jul 2009 11:03

Re: Probleme bei SerienTerminen von einem Kalender
 
Delphi-Quellcode:
ShowMessage(DateToStr(LastDayOfWeekOfMonth(2009,7,DayMonday)));

Wolfgang Mix 30. Jul 2009 11:10

Re: Probleme bei SerienTerminen von einem Kalender
 
Danke, funzt,
hatte DateToStr vergessen!

Zitat:

10 Minuten überlegen ...
mfg

Wolfgang

gangs-taas 1. Aug 2009 21:56

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 ?

Wolfgang Mix 1. Aug 2009 22:46

Re: Probleme bei SerienTerminen von einem Kalender
 
Ich würde 'mal den Autor fragen

http://www.mycsharp.de/wbb2/thread.php?threadid=74208

Gruß

Wolfgang

Jürgen Thomas 2. Aug 2009 10:20

Re: Probleme bei SerienTerminen von einem Kalender
 
@Wolfgang
Die Erklärung erschließt sich eher aus der vorherigen Diskussion Funktion für Lezter Sonntag im Monat. Aber weil das Schritt für Schritt entstand, ist es wohl einfacher, dies hier neu zu erklären:

1. Erzeuge ein Datum mit dem Ersten des aktuellen Monats:
Delphi-Quellcode:
temp := EncodeDateTime(year,month,1,0,0,0,0);
2. Mache daraus den Ersten des nächsten Monats:
Delphi-Quellcode:
temp := IncMonth(temp);
3. Gehe davon so viele Tage zurück (!), bis der gewünschte Wochentag erreicht wird:
Delphi-Quellcode:
Result := IncDay(temp, x);  //  mit negativem Integer x
4. Berechne x möglichst schnell. Machen wir es an einem Beispiel deutlich:
a. Suche den letzten Donnerstag im Juli 2009, also für temp = 01.08.2009.
b. Das ist ein Samstag/Sonnabend, also:
Delphi-Quellcode:
x := DayOfTheWeek(temp);  // x = 5 (nur geraten, weil in meiner Doku DayOfTheWeek fehlt)
c. Gesucht wird DayOfWeek.Donnerstag, also 3 bei DeddyH's Definition
d. Für modulo sind vorzugsweise positive Zahlen zu verwenden, also Addition von 7, also:
Delphi-Quellcode:
x := 3 - x + 7;   // x = 5
e. Es dürfen nur Zahlen von 0 bis 6 herauskommen, also modulo:
Delphi-Quellcode:
x := x mod 7;     // x = 5
f. Wenn ich 5 Tage weitergehe, bekomme ich den nächsten Donnerstag, ich will aber den vorherigen:
Delphi-Quellcode:
x := x - 7;       // x = -2
Das unter 3 eingesetzt gibt das Ergebnis.

Schönen Sonntag! Jürgen

Wolfgang Mix 2. Aug 2009 11:53

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

gangs-taas 2. Aug 2009 13:24

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.
Seite 2 von 2     12   

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