Autor Beitrag
Peter Zissou
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 28.03.11 16:53 
Hallo und zwar sollen wir ein Arbeitskonto erstellen
- ein User soll sein Arbeitsbeginn und ende eingeben
- die Standartarbeitszeit beträgt 8h45min (pausen sind enthalten)
- das Programm soll dann daraus die Überstunden berechnen welches allerdings nur die Stunden und Minuten beachtet
- Negativstunden sind farblich hinterlegt (das mit der Farbe ist nicht das Problem, nur die Berechnung)
- jetzt soll der User wählen ob er einen Freizeitausgleich oder Bezahlung wünscht
- bei Bezahlung soll der Bruttolohn angegeben werden und dieser dann mit der Uhrzeit addiert werden
- bei Freizeitausgleich sollen dann die Wochen, tage und Stunden ausgegeben werden

Wenn der Arbeiter von 8:00 - 8:45 arbeitet und das in die vorgegebenen Felder eingibt, hat er sozusagen -8 stunden und + 45 Minuten gearbeitet. Ich kann aber nicht einfach meine Stundenvariable h - 8 rechnen, da kommt rund 65000 raus. also habe ich eine if verzweigung eingerichtet, diese kann alle varianten errechnen, außer wenn der arbeiter unter einer stunde arbeitet. jetzt habe ich mir gedacht deklariere doch die variable in der zweiten zeile auf h:=h-8; und gebe das dann aus. geht nicht.... ich sitze hier seid zwei stunden und weiß nicht weiter. hättet ihr noch ne idee?? danke.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
var uhrzeitkommen,uhrzeitgehen,uhrzeitgehen-uhrzeitkommen:TDateTime;
var stunden,minuten,sekunden,millisekunden:word;


begin

uhrzeitkommen:=strtotime(maskedit1.Text);
uhrzeitgehen:=strtotime(maskedit2.Text);
uhrzeitgehen-uhrzeitkommen:=uhrzeitgehen-uhrzeitkommen;
maskedit3.Text:=timetostr(uhrzeitgehen-uhrzeitkommen);

DecodeTime(uhrzeitgehen-uhrzeitkommen,stunden,minuten,sekunden,millisekunden);

if (stunden> 0and (minuten>=0then
begin
edit1.text:=inttostr(stunden-8); 
edit2.text:=inttostr(Minuten-45);
end
else
begin
stunden:=stunden-8; (geht nicht!!)
edit1.text:=inttostr(Stunden);
edit2.text:=inttostr(Minuten-45);


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Zuletzt bearbeitet von Peter Zissou am Mo 28.03.11 23:04, insgesamt 1-mal bearbeitet
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 28.03.11 16:57 
Hallo und :welcome: im DF!

Einseits, verwende bitte für deinen Quelltext die Delphi-Tags [delphi][/delphi]. Dadurch brauchst du auch die Zahl 8 nicht mehr so verschlüsseln und es wird auch lesbarer.

Weiters würd ich dich bitten die Variablen aussagekräftig zu benennen oder zumindest den Quelltext so zu kommentieren das man weiß was jetzt a, b und c sind. ;) Mir persönlich wäre die erste Variante lieber, sonst verliert man etwas die Übersicht.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mo 28.03.11 17:28 
Deklariere deine Variable nicht als Word sonder zB als Integer. Der Datentyp Word hat einen Bereich von 0 bis 65535, damit kannst du also keine negativen Zahlen darstellen.
Peter Zissou Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 28.03.11 23:06 
hey ich habe die variablen schnell angepasst. danke erstmal das mit dem integer klappt nicht, da geht decode time nicht mehr. sry das ich das hier so hinklatsche, aber ist abendschule und ich muss morgen wieder früh zeitig auf arbeit. also noch ideen die mein leben retten? danke ;;)