Servus,
ich verzweifel gerade ein bisschen an einem Programm was ich schreibe.
Die
GUI sieht folgendermaßen aus:
http://img175.imageshack.us/f/guicu.jpg/
Die Funktion sollte so sein:
Mitarbeiter gibt in das Feld Anfangszeit eine Uhrzeit ein [Format in zB. 0630 da keine Ahnung wie ich mit TTime Format rechnen kann.] Die Zeit wird in Industriezeit umgerechnet damit ich rechnen kann.
Wenn der Mitarbeiter z.B. 0730 eingibt muss in das Label Montag_1_Impuls_1 07:30 eingegeben werden und in das nächste Montag_1_Impuls_2 09:30.
Dabei gibt es aber noch feste Pausen und eine festen Arbeitszeitraum die bedacht werden müssen.
Gearbeitet wird immer nur von 06:00 bis 14:00 Uhr. Pausen sind einmal von 07:30 bis 07:35, 09:00 bis 09:15 und 11:30 bis 12:10.
Eigentlich muss noch dazu das Schulungen bedacht werden müssen. Ist z.B. am Montag eine Schulung von 8:00 bis 8:30 sollte der zweite Taktimpuls um eine halbe Stunden verschoben werden. Das hab ich aber mal nicht beachtet, da ich so schon Probleme habe.
Meine Fragen:
- Wie bekomme ich es hin das ich eine Normale Uhrzeit eingeben kann ala 07:30 und damit die einzelnen Impulse berechnet werden können.
- Wie mache ich es das die Restzeit richtig übernommen wird? Findet mein Taktimpuls zB. um 13:30 statt muss zum nächsten Tag 30min mit übernommen werden also fängt der erste Impuls erst um 7:30 statt
- Wie beachte ich Schulungen?
Gebe ich zB. 0600 an rechnet er alles richtig durch sollte aber 0630 angegeben werden stimmts nicht
Hier der Code für Montag und Dienstag sonst wird es unübersichtlich:
Delphi-Quellcode:
procedure TForm_Dateneingabe.Ausfuehren_TaktplanungClick(Sender: TObject);
var
Intzeit : integer ;
Startzeit : real;
i : integer;
Summe : real ; //entspr. Taktimpuls i
Taktzeit : real;
Anfangszeit : integer;
Pause1 : real ;
Pause2 : real ;
Pause3 : real ;
a : real ; //Hilfsvariable
b : real ; //Hilfsvariable
h : real; //Hilfsvariable
Uebertrag : real ;
begin
Pause1 := 0.08 ;
Pause2 := 0.33 ;
Pause3 := 1.00 ;
Intzeit := StrToInt(Eingabe_Anfangszeit_h.text) ;
Startzeit := Intzeit ;
Startzeit := Startzeit / 100 ;
a := trunc(Startzeit);
b := Startzeit - a ;
Startzeit := a + b * 10/6 ;
//Montag
for i := 0 to 3 do
begin
Taktzeit := 2 ;
Summe := Startzeit + Taktzeit * i ;
if (Summe >= 7.50) and (Summe < 9.00) then Summe := Summe + Pause1 else
if (Summe >= 9.00) and (Summe <= 11.50) then Summe := Summe + Pause2 ;
if (Summe > 11.50) then Summe := Summe + Pause3 ;
if i = 0 then
begin
a := trunc(Startzeit);
b := Startzeit - a ;
h := a + b * 6/10 ;
Mo_1_Impuls_1.caption := FloatToStr(h*100) ;
end;
if i = 1 then
begin
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 6/10 ;
Mo_1_Impuls_2.caption := FloatToStr(round(Summe*100));
end;
if i = 2 then
begin
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 6/10 ;
Mo_1_Impuls_3.caption := FloatToStr(round(Summe*100)) ;
end;
if i = 3 then
begin
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 6/10 ;
//if Summe*100 >= 1400 then
//Mo_1_Impuls_4.caption := '' else
Mo_1_Impuls_4.caption := FloatToStr(round(Summe*100)) ;
end;
end;
//Dienstag
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 10/6 ;
uebertrag := sqrt(sqr(Summe-14)) ;
if uebertrag >= 2 then uebertrag := uebertrag - 2;
Startzeit := 6 ;
Startzeit := uebertrag + Startzeit ;
for i := 0 to 3 do
begin
Taktzeit := 2 ;
Summe := Startzeit + Taktzeit * i ;
if (Summe >= 7.50) and (Summe < 9.00) then Summe := Summe + Pause1 else
if (Summe >= 9.00) and (Summe <= 11.50) then Summe := Summe + Pause2 ;
if (Summe > 11.50) then Summe := Summe + Pause3 ;
if i = 0 then
begin
a := trunc(Startzeit);
b := Startzeit - a ;
h := a + b * 6/10 ;
Di_1_Impuls_1.caption := FloatToStr(h*100) ;
end;
if i = 1 then
begin
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 6/10 ;
Di_1_Impuls_2.caption := FloatToStr(round(Summe*100));
end;
if i = 2 then
begin
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 6/10 ;
Di_1_Impuls_3.caption := FloatToStr(round(Summe*100)) ;
end;
if i = 3 then
begin
a := trunc(Summe);
b := Summe - a ;
Summe := a + b * 6/10 ;
if Summe*100 >= 1400 then
Di_1_Impuls_4.caption := '' else
Di_1_Impuls_4.caption := FloatToStr(round(Summe*100)) ;
end;
end.
Vielen Dank für eure Hilfe!