Hallo zusammen....
Ich bin etwas gefrustet.... ist recht unübersichtlich geworden....
aber ich hoffe ihr könnt mir dennoch helfen....
Ich habe ein DialogForm erstellt in dem 2 werte eingegeben werden.
ein mal Dienst beginn und einmal dienstende.
nun soll das für eine Lohnkalkulation die tages und die nachtstunden berechnen...
Muss ich nun für Jede möglichkeit eine If Then anweisung schreiben oder geht das auch anders ????
hier mal der Code :
Delphi-Quellcode:
if FEingabe.showModal = mrOK then
begin
With Tage[strtoint(ListView1.ItemFocused.Caption)] do
begin
Tag := '';
ArVon := Feingabe.Von.Text;
ArBis := Feingabe.Bis.Text;
von := StrToDateTime(FEingabe.Von.Text);
bis := StrToDateTime(Feingabe.bis.Text);
if von > bis then
begin
TeilOne := (StrToDateTime('23:59:59') - von); // zeit bis um 00:00 Uhr errechnen
TeilTwo := (bis - StrToDateTime('00:00:01')); // zeit von null bis endzeit errechnen
Gesamt := TeilOne + TeilTwo; // Gesamtstunden errechnen
end else Gesamt := (bis - von);
if ((von < StrToDateTime('20:00:01')) AND (von > StrToDateTime('05:59:59'))
AND NOT (von = StrToDateTime('20:00'))) then
// errechnen wenn die uhrzeit am tag ist
begin
if (bis > StrToDateTime('19:59:59')) then TagGes := abs(StrToDateTime('19:59:59') - von)
else TagGes := gesamt;
ShowMessage('erste eigenschaft trifft zu');
NoNight := true;
end;
if ((von < StrToDateTime('05:59:59')) AND (bis > StrToDateTime('20:00:01'))) then
begin
TagGes := StrToDateTime('12:00:00'); ShowMessage('Zweite eigenschaft trifft zu');
end;
if ((von < StrToDateTime('05:59:59')) AND (bis < StrToDateTime('20:00:01'))) then
begin
TagOne := StrToDateTime('06:00:01')- bis;
TagGes := abs(TagOne); ShowMessage('Dritte eigenschaft trifft zu');
end;
if (((von > StrToDateTime('19:59:59')) AND (bis > StrToDateTime('06:00:01'))) and not
(von = StrToDateTime('20:00'))) then
begin
TagOne := bis - StrToDateTime('06:00:01');
TagGes := abs(TagOne);
ShowMessage('Vierte eigenschaft trifft zu');
end;
if not NoNight then NachtGes := Gesamt - TagGes;
GesamtStd := format('%.2f',[Gesamt*24]);
NStd := format('%.2f',[NachtGes*24]);;
TStd := format('%.2f',[TagGes*24]);
Hoffe es ist so weit verständlich... die Verschiedenen Variablen sind Double werte...
Danke für Jeden tipp...
Gruss Sascha