AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Thema durchsuchen
Ansicht
Themen-Optionen

Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

Ein Thema von sammynrw · begonnen am 1. Aug 2014 · letzter Beitrag vom 1. Aug 2014
Antwort Antwort
Seite 1 von 2  1 2      
sammynrw

Registriert seit: 1. Jul 2014
28 Beiträge
 
#1

Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:18
Hallo Delphi Freunde

Ich habe ein Problem fortlaufende Monate zu berechnen.

Beispiel:
Vertragsbeginn am 1.8.2014 Vertragsende 1.8.2015

Delphi-Quellcode:
function monatsberechnung(monatfeld: Integer): TDate;
var
  jahr, monat, tag: word;
  Tage : Integer;
begin
  decodedate(now, jahr, monat, tag);

  tage := tag;
   jahr := jahr ;
   monat := monat-1;
   tag := tag - tage+2;

  result := encodedate(jahr, monat + monatfeld, tag) - 1;
end;

Delphi-Quellcode:
function letztertagdesmonats(plusminusmonat : Integer): TDate;
var
  y, m, d: word;
begin
  decodedate(now, y, m, d);
  m := m + 1;
  if m > 12 then
  begin
   y := y + 1;
   m := m;

  End;
  result := encodedate(y, m + plusminusmonat, 1)-1 ;
end;
Jetzt lasse ich eine Schleife laufen:

Delphi-Quellcode:
for i := 1 to Anzahl do
 Form1.rzstringgrid1.Cells[1,i] := DateToStr(monatsberechnung(2))+' - ' + DateToStr(letztertagdesmonats(i)) ;
ich bekomme folgende Datum Werte berechnet:

01.09.2014 - 30.09.2014
01.10.2014 - 31.10.2014
01.11.2014 - 30.11.2014

Danach bekomme ich eine Nachricht: Ungültiges Argument zum Codieren des Datum

Was mache ich falsch ... ich verzweifel langsam
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:26
Vielleicht wäre es ganz nützlich, in function monatsberechnung mal zu überprüfen, ob da für den Monat ein Wert > 12 herauskommt:
Delphi-Quellcode:
  monat := monat + monatfeld;
  if monat > 12 then
  begin
    monat := monat - 12;
    Inc(jahr)
  end;
  result := encodedate(jahr, monat, tag) - 1;
Nachfrage:
Worum geht's eigentlich? Vielleicht gibt es eine einfachere Lösung für die eigentliche Aufgabe?

Geändert von Perlsau ( 1. Aug 2014 um 19:29 Uhr) Grund: Nachfrage
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:40
Hallo-

Die Methoden StartOfTheMonth(TDateTime) und EndOfTheMonth(TDateTime) kennst du aber, oder?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:42
Jupp.
Wieviele Monate hat nochmal ein Jahr?
Und bei mehr ist das "Datum" Natürlich ungültig.
Also mußt du, bei dieser Vorgehensweise, den Monateswert (z.B. via MOD) auf 1 bis 12 begrenzen und den Überlauf (DIV) zum Jahr dazurechnen.

@Perlsau: Das geht dann aber auch wieder nur bis 24.
Entweder als Schleife, oder mathematisch.


Delphi-Referenz durchsuchenMonthsBetween
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
sammynrw

Registriert seit: 1. Jul 2014
28 Beiträge
 
#5

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:45
Ich brauche den Abrechnungszeitraum des monats Beispiel: 01.08.2014 - 31.08.2014 usw.
für ein Stringgrid.
Miniaturansicht angehängter Grafiken
delphi-screenshoot.png  
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:51
Was benötigst du da? Die Anzahl der Tage?

@Perlsau: Das geht dann aber auch wieder nur bis 24.
Ohne weitere Vorgaben des TE kann man hier keine ordentliche Lösung finden. Mir ging es in obigem Beispiel lediglich darum, aufzuzeigen, daß die berechnete Monatsvariable im Code des TE auch einen Wert > 12 annehmen kann.

Geändert von Perlsau ( 1. Aug 2014 um 19:54 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:52
Schau dich mal, wie von Günther schon genannt, in den Delphi-Referenz durchsuchenDateUtils um. Des Weiteren kannst du zu dem Tag, Monat oder dem Jahr einfach Zahlen addieren. Natürlich musst du aufpassen, dass das errechnete Datum auch ein gültiges Datum ist. Aber ich denke, dass in den DateUtils bereits alles vorhanden ist was du brauchst.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:54
In den beiden letzten Posts, vor deiner letzten Antwort, stehen alle Funktionen, welche man für alle Datums- und Zahlenwerte auf deinem Bild benötigt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
sammynrw

Registriert seit: 1. Jul 2014
28 Beiträge
 
#9

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:55
erste tag des monats und der letzte tag des monats ...

aber er rechnet nur bis zum November ... dann kommt die fehler meldung
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???

  Alt 1. Aug 2014, 19:59
aber er rechnet nur bis zum November ... dann kommt die fehler meldung
Und nun lies dir nochmal die alle Antworten durch, denn der Grund wurde mehrfach erklärt und sogar Lösungen genannt.

Auch ein Blick in Delphi-Referenz durchsuchenEncodeDate (siehe VALID/ZULÄSSIG) kann nicht schaden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Aug 2014 um 20:02 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz