Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ??? (https://www.delphipraxis.net/181283-fortlaufende-monat-aufzaehlung-stoppt-im-monat-dezember.html)

sammynrw 1. Aug 2014 18:18

Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
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 :(

Perlsau 1. Aug 2014 18:26

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
Vielleicht wäre es ganz nützlich, in
Delphi-Quellcode:
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?

Der schöne Günther 1. Aug 2014 18:40

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

Die Methoden
Delphi-Quellcode:
StartOfTheMonth(TDateTime)
und
Delphi-Quellcode:
EndOfTheMonth(TDateTime)
kennst du aber, oder?

himitsu 1. Aug 2014 18:42

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
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. :zwinker:
Entweder als Schleife, oder mathematisch.


Delphi-Referenz durchsuchenMonthsBetween

sammynrw 1. Aug 2014 18:45

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich brauche den Abrechnungszeitraum des monats Beispiel: 01.08.2014 - 31.08.2014 usw.
für ein Stringgrid.

Perlsau 1. Aug 2014 18:51

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
Was benötigst du da? Die Anzahl der Tage?

Zitat:

Zitat von himitsu (Beitrag 1267294)
@Perlsau: Das geht dann aber auch wieder nur bis 24. :zwinker:

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.

Aviator 1. Aug 2014 18:52

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
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.

himitsu 1. Aug 2014 18:54

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
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. :roll:

sammynrw 1. Aug 2014 18:55

AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
 
erste tag des monats und der letzte tag des monats ...

aber er rechnet nur bis zum November ... dann kommt die fehler meldung :(

himitsu 1. Aug 2014 18:59

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

Zitat von sammynrw (Beitrag 1267299)
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 Uhr.
Seite 1 von 2  1 2      

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