Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Verrückt...Func-Ergebnisse werden durch Komponenten fals

  Alt 4. Nov 2009, 15:59
einmal die formatierte Version.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Run(Now);
end;

//------------------------------------------------------------------------------------------------

procedure TForm1.Run(Datum:TDateTime);
var
  i,idx: Word;
  tg:integer;
begin //<-proc
  tg:=TageinMonat(datum); //<- Unit 'eigene Datumsroutinen.pas'
  Form1.Caption:=NamendesMonats(Now)+' '+inttostr(CurrentYear);
  Label1.Caption:=' Der Monat hat '+inttostr(tg)+' Tage';
  idx:=0;
  FTArray:=GetHolidayTable(YearOf(Datum)); //<-- Unit 'Unit_Holidays.pas'
  setlength(TagArray,tg);
  for i:= 0 to tg-1 do
    begin //<-for
      inc(idx);
      TagArray[i].TNum:=i+1;
      TagArray[i].abwBegin:= '';
      TagArray[i].abwEnde:= '';
      if LblFeiertag(i+1,monthOf(Datum),FTArray)<>'then //FTArray enthält Feiertage
        begin
          TagArray[i].TgName:=LblFeiertag(i+1,monthOf(Datum),FTArray); //Feiertagsname, falls einer ist
          TagArray[i].Werktag:=Tagarray[i-1].Werktag + 0; //Feiertag ist kein Werktag
        end
      else
        begin
          TagArray[i].TgName:=NamendesTages(ArrIdxalsTagDatum(idx,MonthOf(Datum),YearOf(Datum)));
          {Hier werden die Arbeitstage berechnet und falsch berechnet, wenn Komponente aufs Form kommt}
          TagArray[i].Werktag:=Tagarray[i-1].Werktag + Weekend(TagArray,i); // Zählt die Werktage (var Byte)
        end; //<-else

 {  if (TagArray[i].TgName <> 'Samstag') and (TagArray[i].TgName <> 'Sonntag') then
      begin
        TagArray[i].abwBegin:= '18:00';
        TagArray[i].abwEnde:=  '20:00';
      end;
    if (TagArray[i].TgName = 'Freitag') then
      begin
        TagArray[i].abwBegin:= '18:00';
        TagArray[i].abwEnde:= '21:00';
      end;}

    TagArray[i].LBH:= StdLohnmalMinuten(8.15, 132)*TagArray[i].Werktag; //132min/Tag = (4*2Std + 1*3Std/Woche)
    Label2.caption:= 'Im '+NamendesMonats(Now)+ ' ist der Monatsverdienst '+FloattostrF(TagArray[i].LBH,ffcurrency,5,2);
    Label3.Caption:='Der Monat hat '+inttostr(TagArray[High(TagArray)].werktag)+' Werktage';
  end; //For
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat