Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Ordinaler Typ (https://www.delphipraxis.net/179082-ordinaler-typ.html)

hirsch 13. Feb 2014 10:14

Ordinaler Typ
 
Ich hätte da noch eine Verständnisfrage:
Delphi-Quellcode:
var
  Jahr   :Word;
  i,j    :Integer;
  Jahrtagebegin, Jahrtageende, Z: TDate;
begin
  Jahrtagebegin:=StartOfaYear(Jahr);
  JahrTageEnde:=EndOfAYear(Jahr);
  I:=0;
  for Z := JahrtageBegin to JahrTageEnde do begin
    if (DayOfTheWeek(z)=6) or (DayOfTheWeek(z)=7)then begin
      SG.Cells[0,i+1+j]:=IntToStr(Jahr);
      SG.Cells[1,i+1+j]:=DateTimeToStr(z);
      SG.Cells[2,i+1+j]:='Wochende';
      SG.Cells[3,i+1+j]:=wochentag(DayOfTheWeek(z));
      SG.Cells[4,i+1+j]:=IntToStr(WeekOf(z));
      SG.Cells[5,i+1+j]:=IntToStr(z);
      I:=I+1;
    end;
end;
Z ist als TDate deklariert.
Warum kann man den nicht als Schleifenzähler nehmen?
Ich wollte eine Liste aller Wochenenden haben.

DeddyH 13. Feb 2014 10:21

AW: Ordinaler Typ
 
TDate ist vom Typ TDateTime und der wiederum vom Typ double, also eine Fließkommazahl. Und eine solche kann man nicht als Schleifenvariable verwenden.

hirsch 13. Feb 2014 10:30

AW: Ordinaler Typ
 
Vielen Dank

jetzt wird es kompliziert.

DeddyH 13. Feb 2014 10:43

AW: Ordinaler Typ
 
Du musst ja nicht zwingend eine For-Schleife verwenden.
Delphi-Quellcode:
Z := JahrtageBegin;
while Z < JahrTageEnde do
  begin
    ...
    Z := DateUtils.IncDay(Z);
  end;
Etwa so zumindest müsste es auch funktionieren, ggf. musst Du noch Rundungsungenauigkeiten berücksichtigen.

himitsu 13. Feb 2014 11:02

AW: Ordinaler Typ
 
Wenn man nur in Tagen Rechnet (TDate), dann kann man das auch in einen Integer umwandeln.

- vor dem Komma = Tage (Tage/Jahre/Monate)
- mach dem Komma = Anteil des Tages (Stunde/Minute/Sekunde/Millisekunde)

hirsch 13. Feb 2014 11:23

AW: Ordinaler Typ
 
Vielen Dank DeddyH und himitsu,

nun habe ich meine Tabelle.
Oben stehen nun die Feiertage und angefügt daran kommen die WochenendeTage.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 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