letzter Tag im Monat / letzter Werktag im Monat
Hallo Zusammen,
vielen Dank für Eure Hilfe.
Wäre es möglich, mir noch Hilfestellung bei dem Problem des Feiertags zu geben? Wäre toll.
Ich bin leider noch nicht so fit, damit ich diese Feiertag in das Makro einbauen könnte.
Wäre echt super, wenn jemand das noch ergänzen könnte.
Vielen Dank.
Gruß
Michael
vielen Dank für Eure Hilfe.
Wäre es möglich, mir noch Hilfestellung bei dem Problem des Feiertags zu geben? Wäre toll.
Ich bin leider noch nicht so fit, damit ich diese Feiertag in das Makro einbauen könnte.
Wäre echt super, wenn jemand das noch ergänzen könnte.
Vielen Dank.
Gruß
Michael
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
also, wie du "Ostern" ermittelst, was ja anscheinend ein ziemlicher Angelpunkt ist, musst du dir irgendwo im Netz raussuchen.
Ich weiß nur, dass das Passah am 14. Nisan ist, das ist der erste Vollmond nach dem Frühlingsdurchgang,
aber der Römische Kirchen-Kalender stimmt nicht mit dem antiken Hebräischen Kalender überein.
sobald du ein Tagesdatum hast, kannst du es durch ParseDate jagen.
Ich weiß nur, dass das Passah am 14. Nisan ist, das ist der erste Vollmond nach dem Frühlingsdurchgang,
aber der Römische Kirchen-Kalender stimmt nicht mit dem antiken Hebräischen Kalender überein.
sobald du ein Tagesdatum hast, kannst du es durch ParseDate jagen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Danke für Deine Antwort.Kaeru Gaman hat geschrieben:also, wie du "Ostern" ermittelst, was ja anscheinend ein ziemlicher Angelpunkt ist, musst du dir irgendwo im Netz raussuchen.
sobald du ein Tagesdatum hast, kannst du es durch ParseDate jagen.
Weiter oben hatte ich einen Code angefügt, der diese Berechnung, leider in VB durchführt. Mir fehlt es nur leider an Erfahrung, wie ich das in PB umsetzen könnte.

Wäre toll, wenn Du mir nochmal helfen könntest.
Vielen Dank.
Gruß
Michael
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Hallo Kaeru Gaman,
Ist das hier in PB ein Objekt? Oder könnte das auch eine Struktur sein?
Bin leider Anfänger, deshalb Frage ich.
Nochmals vielen Dank für Deine Hilfe und Geduld mit mir.
Ist halt schwierig für mich dies umzusetzen.
Gruß
Michael
Kaeru Gaman hat geschrieben:es existiert kein m_uDTF-Objekt in PB!
Code: Alles auswählen
Type DtFeiertage
Jahreszahl As Long
Ostern As Date
Neujahr As Date
DreiKoenige As Date
Rosenmontag As Date
Aschermittwoch As Date
Karfreitag As Date
Ostersonntag As Date
Ostermontag As Date
Maifeiertag As Date
ChrHimmelfahrt As Date
Pfingstsonntag As Date
Pfingstmontag As Date
Fronleichnam As Date
MariaeHimmelfahrt As Date
DtEinheit As Date
Reformationstag As Date
Allerheiligen As Date
Heiligabend As Date
Weihnachten1 As Date
Weihnachten2 As Date
Sylvester As Date
End Type
Dim m_uDTF As DtFeiertage
Bin leider Anfänger, deshalb Frage ich.
Hm, vielen Dank für den Hinweis. Ist diese Formel, die ich weiter oben geschrieben habe im VB Code nicht ok??Kaeru Gaman hat geschrieben:du musst dir ne Formel für Ostern ausm Netz suchen.
Code: Alles auswählen
Function Ostern_berechnen(ByVal lYear As Long) As Boolean
'// Berechnung mit Hilfe des Algorithmus von Gauß
On Error GoTo Err_Ostern_berechnen
Dim i1 As Integer
Dim i2 As Integer
Dim i3 As Integer
Dim i4 As Integer
Dim i5 As Integer
Dim iTZ As Integer '// iTZ = Tageszahl
i1 = lYear Mod 19 '// Formel nach Gauß
i2 = lYear Mod 4 '// Werte für die Jahre
i3 = lYear Mod 7 '// 1900 - 2099
i4 = (19 * i1 + 24) Mod 30
i5 = (2 * i2 + 4 * i3 + 6 * i4 + 5) Mod 7
iTZ = 22 + i4 + i5 '// Ermittelt den Tag
If iTZ > 31 Then '// März oder April
iTZ = iTZ - 31 '// Wenn April, dann - 31 Tage
If iTZ = 26 Then iTZ = 19 '// Wenn 26.4. dann 19.4.
If (iTZ = 25 And i4 = 28 And i1 > 10) Then iTZ = 18
m_uDTF.Ostern = DateSerial(lYear, 4, iTZ) '// Ostern im April
Else
m_uDTF.Ostern = DateSerial(lYear, 3, iTZ) '// Ostern im Maerz
End If
Ostern_berechnen = True
Exit_Ostern_berechnen:
Exit Function
Ist halt schwierig für mich dies umzusetzen.
Gruß
Michael
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Im CodeArchiv findeste eine etwas ältere PB Version für Ostern usw.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Hallo Michael!
Daher habe ich das absichtlich noch nicht fertig gemacht, sondern erstmal nur angefangen:
- ein paar Sachen gelöscht
- "Function" durch "Procedure" ersetzt
- "'//" durch ";" ersetzt
- einzeilige If/Then-Anweisungen in mehrzeilige umgewandelt
- "m_uDTF.Ostern =" durch "ProcedureReturn" ersetzt
Nu kommst Du! 
Versuche in der Hilfe Antworten auf folgende Fragen zu finden:
- Wie werden in PureBasic Prozedur-Parameter übergeben?
(Muss/darf in der Klammer "ByVal" bzw. "As" stehen?)
- Was muss in PureBasic statt "Dim ... As ..." stehen?
- Was muss in PureBasic statt "Mod" stehen?
- Was ist mit "Then"?
- Was ist mit "End If"?
- Welche Funktion muss in PureBasic statt "DateSerial()" benutzt werden?
Er reicht ja, wenn Du erstmal ein paar Antworten herausfindest.
Gruß, Little John
Der Code zur Oster-Berechnung eignet sich gut, um PureBasic und einige seiner Unterschiede zu Visual Basic kennen zu lernen. Die Umsetzung ist -- mit unserer Hilfe -- nicht schwierig, und Du wirst so viel mehr über PureBasic lernen, als wenn Du Dir fertigen Code kopierst.Ist halt schwierig für mich dies umzusetzen.
Daher habe ich das absichtlich noch nicht fertig gemacht, sondern erstmal nur angefangen:
- ein paar Sachen gelöscht
- "Function" durch "Procedure" ersetzt
- "'//" durch ";" ersetzt
- einzeilige If/Then-Anweisungen in mehrzeilige umgewandelt
- "m_uDTF.Ostern =" durch "ProcedureReturn" ersetzt
Code: Alles auswählen
Procedure.i Ostern_berechnen (ByVal lYear As Long)
; Berechnung mit Hilfe des Algorithmus von Gauß
Dim i1 As Integer
Dim i2 As Integer
Dim i3 As Integer
Dim i4 As Integer
Dim i5 As Integer
Dim iTZ As Integer ; iTZ = Tageszahl
i1 = lYear Mod 19 ; Formel nach Gauß
i2 = lYear Mod 4 ; Werte für die Jahre
i3 = lYear Mod 7 ; 1900 - 2099
i4 = (19 * i1 + 24) Mod 30
i5 = (2 * i2 + 4 * i3 + 6 * i4 + 5) Mod 7
iTZ = 22 + i4 + i5 ; Ermittelt den Tag
If iTZ > 31 Then ; März oder April
iTZ = iTZ - 31 ; Wenn April, dann - 31 Tage
If iTZ = 26 Then
iTZ = 19 ; Wenn 26.4. dann 19.4.
End If
If (iTZ = 25 And i4 = 28 And i1 > 10) Then
iTZ = 18
End If
ProcedureReturn DateSerial(lYear, 4, iTZ) ; Ostern im April
Else
ProcedureReturn DateSerial(lYear, 3, iTZ) ; Ostern im Maerz
End If
EndProcedure

Versuche in der Hilfe Antworten auf folgende Fragen zu finden:
- Wie werden in PureBasic Prozedur-Parameter übergeben?
(Muss/darf in der Klammer "ByVal" bzw. "As" stehen?)
- Was muss in PureBasic statt "Dim ... As ..." stehen?
- Was muss in PureBasic statt "Mod" stehen?
- Was ist mit "Then"?
- Was ist mit "End If"?
- Welche Funktion muss in PureBasic statt "DateSerial()" benutzt werden?
Er reicht ja, wenn Du erstmal ein paar Antworten herausfindest.

Gruß, Little John
Zuletzt geändert von Little John am 24.05.2009 11:35, insgesamt 1-mal geändert.
Hallo Little John,
Werde versuchen Deine Hinweise und Tipps umzusetzen.
Echt Klasse.
Gruß
Michael
Vielen Dank für Deine Hilfe, echt super. Manchmal braucht man einfach nur einen Schubs in die richtige Richtung.Little John hat geschrieben:Daher habe ich das absichtlich noch nicht fertig gemacht, sondern erstmal nur angefangen:
- ein paar Sachen gelöscht
- "Function" durch "Procedure" ersetzt
- "'//" durch ";" ersetzt
- einzeilige If/Then-Anweisungen in mehrzeilige umgewandelt
- "m_uDTF.Ostern =" durch "ProcedureReturn" ersetzt
Werde versuchen Deine Hinweise und Tipps umzusetzen.
Echt Klasse.

Gruß
Michael