Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Variable


Peter Zissou - Mo 28.03.11 16:53
Titel: Variable
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.


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


elundril - 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


Jann1k - 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 - 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 ;;)