AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnung von Produktionsintervallen

Ein Thema von Bonimahoni · begonnen am 23. Jul 2010 · letzter Beitrag vom 27. Jul 2010
Antwort Antwort
Bonimahoni

Registriert seit: 21. Jul 2010
10 Beiträge
 
Turbo Delphi für Win32
 
#1

Berechnung von Produktionsintervallen

  Alt 23. Jul 2010, 08:46
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!
Miniaturansicht angehängter Grafiken
guicu.jpg  

Geändert von mkinzler (23. Jul 2010 um 08:55 Uhr) Grund: Bild in den Anhang gepackt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Berechnung von Produktionsintervallen

  Alt 23. Jul 2010, 08:50
Keine fertige Lösung, aber schau einmal in die Unit DateUtils, da sind viele der benötigten Funktionen bereits implementiert (MinutesBetween z.B.).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DelphiBandit
DelphiBandit

Registriert seit: 19. Feb 2007
Ort: bei Walsrode
165 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Berechnung von Produktionsintervallen

  Alt 23. Jul 2010, 09:13
Für die Eingabe würde ich an Deiner Stelle TMaskEdit mit einer EditMask für das kurze Zeitformat vorsehen. Das minimiert die Fehler, welche man bei der Eingabe so anstellen kann.

Hilft zwar nicht bei 25:98, aber solche Fehler bekommst Du spätestens bei der Umrechnung raus und springst bei Fehlern nach einer Meldung wieder in das fehlerhafte Edit zurück.
Carsten
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#4

AW: Berechnung von Produktionsintervallen

  Alt 23. Jul 2010, 09:34
[OT]
Seitdem auf einem SAP Ausdruck was meine Arbeitszeiten angeht einmal die Endzeit 28:04 stand, ist für mich 25:98 eine gültige Zeitangabe. Die Premium-Software hat schließlich immer recht.
[/OT]
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Bonimahoni

Registriert seit: 21. Jul 2010
10 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Berechnung von Produktionsintervallen

  Alt 23. Jul 2010, 10:03
Gut dann werde ich mich da mal reinarbeiten. Erstmal die Unit finden

Die Eingabe kann sowieso nur zwischen 06:00:00 und 14:00:00 Uhr geschehen da nur in dieser Zeit gearbeitet wird. Dann immer Taktzeit 2h dazu außer es gibt eine Schulung um eine Uhrzeit dann wird es um die Zeit erweitert oder wenn die Summe von Anfangszeit und der Taktzeit die Pausen überschreitet halt die Pausenzeit dazu.

Ich versuch mal etwas mit der MinutesBetween Funktion vielleicht kommt damit was raus. Zumindest die Darstellung würde besser aussehen als gerade also nicht 0600 sondern 06:00
  Mit Zitat antworten Zitat
Bonimahoni

Registriert seit: 21. Jul 2010
10 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Berechnung von Produktionsintervallen

  Alt 26. Jul 2010, 14:08
So ich hab doch mit Industriezeit berechnet nach dem ich im Forum gefunden habe wie man Zeit decoded und endcoded.

Könnte sich jemand den Code anschauen und sagen ob man daran noch etwas verbessern kann?

Aso hat jemand noch zufällig einen Link für ein Tutorial über das Laden von Frames in Frames? Möchte gerne eine Hauptseite mit einem Hauptmenu machen wo ich mein Datengrundladeframe reinlade. Habe leider nichts konkretes dazu gefunden

Die GUI: http://img265.imageshack.us/f/guicw.jpg/

Hier der Code:

Delphi-Quellcode:
procedure TForm_Dateneingabe.Ausfuehren_TaktplanungClick(Sender: TObject);

var

Eingabezeit,Darstellung : Ttime ;
Fr_1_Schulung_Von , Fr_1_Schulung_Bis , Do_1_Schulung_Von, Do_1_Schulung_Bis ,Mi_1_Schulung_Von ,Mi_1_Schulung_Bis, Di_1_Schulung_Bis , Di_1_Schulung_Von, Mo_1_Schulung_Bis, Mo_1_Schulung_Von : Ttime ;
i,hour, minute, Arbeitsanfang : integer;
Dauerschulung, Pause1, Pause2, Pause3, Uebertrag, Taktzeit, Taktimpuls, Startzeit : real ;
h, m, s, ms: Word;

Dauerschulung1, Dauerschulung2 , Dauerschulung3 , Dauerschulung4 , Dauerschulung5 : real ;

begin

Pause1 := 0.08 ; // 5min
Pause2 := 0.33 ; // 15min
Pause3 := 1.00 ; // = Pause1 + 2 + 40min Mittag
Taktzeit := 2 ; // 2h
Arbeitsanfang := 6 ; // 6 Uhr


Eingabezeit := StrToTime(Eingabe_Anfangszeit.text) ;
DecodeTime(Eingabezeit, h, m, s, ms);
Startzeit := h + (m * 10/6)/100 ;

//Montag Schulung

if Mo_1_Schulung.checked then
begin
Mo_1_Schulung_Bis := StrToTime(Eingabe_Mo_1_Schulung_Bis.text) ;
DecodeTime(Mo_1_Schulung_Bis, h, m, s, ms);
Mo_1_Schulung_Bis := h + (m * 10/6)/100 ;

Mo_1_Schulung_Von := StrToTime(Eingabe_Mo_1_Schulung_Von.text) ;
DecodeTime(Mo_1_Schulung_Von, h, m, s, ms);
Mo_1_Schulung_Von := h + (m * 10/6)/100 ;

Dauerschulung1 := Mo_1_Schulung_Bis - Mo_1_Schulung_Von ;
end;

//Dienstag Schulung

if Di_1_Schulung.checked then
begin
Di_1_Schulung_Bis := StrToTime(Eingabe_Di_1_Schulung_Bis.text) ;
DecodeTime(Di_1_Schulung_Bis, h, m, s, ms);
Di_1_Schulung_Bis := h + (m * 10/6)/100 ;

Di_1_Schulung_Von := StrToTime(Eingabe_Di_1_Schulung_Von.text) ;
DecodeTime(Di_1_Schulung_Von, h, m, s, ms);
Di_1_Schulung_Von := h + (m * 10/6)/100 ;

Dauerschulung2 := Di_1_Schulung_Bis - Di_1_Schulung_Von ;
end;

//Mittwoch Schulung

if Mi_1_Schulung.checked then
begin
Mi_1_Schulung_Bis := StrToTime(Eingabe_Mi_1_Schulung_Bis.text) ;
DecodeTime(Mi_1_Schulung_Bis, h, m, s, ms);
Mi_1_Schulung_Bis := h + (m * 10/6)/100 ;

Mi_1_Schulung_Von := StrToTime(Eingabe_Mi_1_Schulung_Von.text) ;
DecodeTime(Mi_1_Schulung_Von, h, m, s, ms);
Mi_1_Schulung_Von := h + (m * 10/6)/100 ;
Dauerschulung3 := Mi_1_Schulung_Bis - Mi_1_Schulung_Von ;
end;

//Donnerstag Schulung

if Do_1_Schulung.checked then
begin
Do_1_Schulung_Bis := StrToTime(Eingabe_Do_1_Schulung_Bis.text) ;
DecodeTime(Do_1_Schulung_Bis, h, m, s, ms);
Do_1_Schulung_Bis := h + (m * 10/6)/100 ;

Do_1_Schulung_Von := StrToTime(Eingabe_Do_1_Schulung_Von.text) ;
DecodeTime(Do_1_Schulung_Von, h, m, s, ms);
Do_1_Schulung_Von := h + (m * 10/6)/100 ;
Dauerschulung4 := Do_1_Schulung_Bis - Do_1_Schulung_Von ;
end;

//Freitag Schulung

if Fr_1_Schulung.checked then
begin
Fr_1_Schulung_Bis := StrToTime(Eingabe_Fr_1_Schulung_Bis.text) ;
DecodeTime(Fr_1_Schulung_Bis, h, m, s, ms);
Fr_1_Schulung_Bis := h + (m * 10/6)/100 ;

Fr_1_Schulung_Von := StrToTime(Eingabe_Fr_1_Schulung_Von.text) ;
DecodeTime(Fr_1_Schulung_Von, h, m, s, ms);
Fr_1_Schulung_Von := h + (m * 10/6)/100 ;
Dauerschulung5 := Fr_1_Schulung_Bis - Fr_1_Schulung_Von ;
end;


//Berechnung Taktimpulse Montag

For i:=0 to 3 do

begin

  Taktimpuls := Startzeit + Taktzeit * i ;

  if Mo_1_Schulung_Von < Taktimpuls then Taktimpuls := Taktimpuls + Dauerschulung1 ;

  if (Taktimpuls > 7.50) and (Taktimpuls < 9.00) then Taktimpuls := Taktimpuls + Pause1 else
  if (Taktimpuls >= 9.00) and (Taktimpuls < 11.50) then Taktimpuls := Taktimpuls + Pause2 ;
  if (Taktimpuls >= 11.50) then Taktimpuls := Taktimpuls + Pause3 ;

  if i = 0 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mo_1_Impuls_1.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 1 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mo_1_Impuls_2.caption := FormatDateTime('hh:nn:ss', Darstellung)
   end;

  if i = 2 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mo_1_Impuls_3.caption := FormatDateTime('hh:nn:ss', Darstellung)
   end;

   if i = 3 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mo_1_Impuls_4.caption := FormatDateTime('hh:nn:ss', Darstellung) ;
    if Taktimpuls > 14 then Mo_1_Impuls_4.visible := false ;
    end;

end;

if taktimpuls < 14 then uebertrag := 2 - (14 - Taktimpuls)
else uebertrag := taktimpuls - 14 ;

Startzeit := uebertrag + Arbeitsanfang ;

//Berechnung Taktimpulse Dienstag

for i := 0 to 3 do

begin

  Taktimpuls := Startzeit + Taktzeit * i ;

  if Di_1_Schulung_Von < Taktimpuls then Taktimpuls := Taktimpuls + Dauerschulung2 ;

  if (Taktimpuls > 7.50) and (Taktimpuls < 9.00) then Taktimpuls := Taktimpuls + Pause1 else
  if (Taktimpuls >= 9.00) and (Taktimpuls < 11.50) then Taktimpuls := Taktimpuls + Pause2 ;
  if (Taktimpuls >= 11.50) then Taktimpuls := Taktimpuls + Pause3 ;

  if i = 0 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Di_1_Impuls_1.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 1 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Di_1_Impuls_2.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 2 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Di_1_Impuls_3.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

   if i = 3 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Di_1_Impuls_4.caption := FormatDateTime('hh:nn:ss', Darstellung);
    if Taktimpuls > 14 then Di_1_Impuls_4.visible := false ;
    end;
end;


if taktimpuls < 14 then uebertrag := 2 - (14 - Taktimpuls)
else uebertrag := taktimpuls - 14 ;

Startzeit := uebertrag + Arbeitsanfang ;

//Berechnung Taktimpulse Mittwoch

for i := 0 to 3 do

begin

  Taktimpuls := Startzeit + Taktzeit * i ;

  if Mi_1_Schulung_Von < Taktimpuls then Taktimpuls := Taktimpuls + Dauerschulung3 ;

  if (Taktimpuls > 7.50) and (Taktimpuls < 9.00) then Taktimpuls := Taktimpuls + Pause1 else
  if (Taktimpuls >= 9.00) and (Taktimpuls < 11.50) then Taktimpuls := Taktimpuls + Pause2 ;
  if (Taktimpuls >= 11.50) then Taktimpuls := Taktimpuls + Pause3 ;

  if i = 0 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mi_1_Impuls_1.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 1 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mi_1_Impuls_2.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 2 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mi_1_Impuls_3.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

   if i = 3 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Mi_1_Impuls_4.caption := FormatDateTime('hh:nn:ss', Darstellung);
    if Taktimpuls > 14 then Mi_1_Impuls_4.visible := false ;
    end;
end;


if taktimpuls < 14 then uebertrag := 2 - (14 - Taktimpuls)
else uebertrag := taktimpuls - 14 ;

Startzeit := uebertrag + Arbeitsanfang ;

//Berechnung Taktimpulse Donnerstag

for i := 0 to 3 do

begin

  Taktimpuls := Startzeit + Taktzeit * i ;

  if Mi_1_Schulung_Von < Taktimpuls then Taktimpuls := Taktimpuls + Dauerschulung4 ;

  if (Taktimpuls > 7.50) and (Taktimpuls < 9.00) then Taktimpuls := Taktimpuls + Pause1 else
  if (Taktimpuls >= 9.00) and (Taktimpuls < 11.50) then Taktimpuls := Taktimpuls + Pause2 ;
  if (Taktimpuls >= 11.50) then Taktimpuls := Taktimpuls + Pause3 ;

  if i = 0 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Do_1_Impuls_1.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 1 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Do_1_Impuls_2.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 2 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Do_1_Impuls_3.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

   if i = 3 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Do_1_Impuls_4.caption := FormatDateTime('hh:nn:ss', Darstellung);
    if Taktimpuls > 14 then Do_1_Impuls_4.visible := false ;
    end;
end;


if taktimpuls < 14 then uebertrag := 2 - (14 - Taktimpuls)
else uebertrag := taktimpuls - 14 ;

Startzeit := uebertrag + Arbeitsanfang ;

//Berechnung Taktimpulse Freitag

for i := 0 to 3 do

begin

  Taktimpuls := Startzeit + Taktzeit * i ;

  if Fr_1_Schulung_Von < Taktimpuls then Taktimpuls := Taktimpuls + Dauerschulung5 ;

  if (Taktimpuls > 7.50) and (Taktimpuls < 9.00) then Taktimpuls := Taktimpuls + Pause1 else
  if (Taktimpuls >= 9.00) and (Taktimpuls < 11.50) then Taktimpuls := Taktimpuls + Pause2 ;
  if (Taktimpuls >= 11.50) then Taktimpuls := Taktimpuls + Pause3 ;

  if i = 0 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Fr_1_Impuls_1.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 1 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Fr_1_Impuls_2.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

  if i = 2 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Fr_1_Impuls_3.caption := FormatDateTime('hh:nn:ss', Darstellung);
    end;

   if i = 3 then
    begin
    hour := trunc(Taktimpuls);
    minute := round( (Taktimpuls - hour) * 6/10 * 100);
    Darstellung := EncodeTime(hour, minute, s, ms) ;
    Fr_1_Impuls_4.caption := FormatDateTime('hh:nn:ss', Darstellung);
    if Taktimpuls > 14 then Fr_1_Impuls_4.visible := false ;
    end;
end;

if taktimpuls < 14 then uebertrag := 2 - (14 - Taktimpuls)
else uebertrag := taktimpuls - 14 ;
hour := trunc(uebertrag);
minute := round( (uebertrag - hour) * 6/10 * 100);
Darstellung := EncodeTime(hour, minute, s, ms) ;
Uebertrag_auf_Montag.caption := FormatDateTime('hh:nn:ss', Darstellung);

end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Berechnung von Produktionsintervallen

  Alt 26. Jul 2010, 14:50
So ich hab doch mit Industriezeit berechnet nach dem ich im Forum gefunden habe wie man Zeit decoded und endcoded.
Könnte sich jemand den Code anschauen und sagen ob man daran noch etwas verbessern kann?
Ja, kein Problem. Da ist noch jede Menge Potenzial.

Delphi-Quellcode:
if Mo_1_Schulung.checked then
begin
...
if Di_1_Schulung.checked then
begin
...
if Mi_1_Schulung.checked then
begin
...
if Do_1_Schulung.checked then
begin
...
if Fr_1_Schulung.checked then
begin
Ahja .. hast du dir schon mal überlegt, da eine Funktion herauszuziehen??
Oder die Steuerelemente in Arrays zu verpacken?
Sogar FindComponent() ließe sich hier noch vertreten... aber das ist ja nicht mehr schön was du da gemacht hast...

Delphi-Quellcode:
For i:=0 to 3 do
begin
  if i = 0 then
  if i = 1 then
  if i = 2 then
  if i = 3 then
end;
Ahja ... das bewährte for-if Statement. ist ja auch fast sinnvoll
O
M
G
Einmal reicht nicht, du hast das ganze 5 mal gemacht

Geändert von jfheins (26. Jul 2010 um 15:33 Uhr)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#8

AW: Berechnung von Produktionsintervallen

  Alt 26. Jul 2010, 16:18
Nicht nur das, der ganze Code strotzt nur so vor doppelten Sachen, z.B.

Delphi-Quellcode:
hour := trunc(Taktimpuls);
minute := round( (Taktimpuls - hour) * 6/10 * 100);
Darstellung := EncodeTime(hour, minute, s, ms) ;
Wieso rufst du das ganze x-Mal auf? Einmal reicht doch, ist ja immer das gleiche.
Lager das doch in eine Funktion aus, die du einmal aufrufst.
Sonst bekommst du das Problem, dass du zig Zeilen gleichen Codes ändern musst, wenn du mal etwas an der Berechnung verändern willst....

Ich glaube, den Code könnte man durch Arrays, oder sei es nur, die Labels durch deren Tag-Wert zu suchen (anstatt auf Fr_1_Impuls_1, Fr_1_Impuls_2 usw. zuzugreifen), auf ein paar Zeilen strippen

Geändert von blackfin (26. Jul 2010 um 16:22 Uhr)
  Mit Zitat antworten Zitat
Bonimahoni

Registriert seit: 21. Jul 2010
10 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Berechnung von Produktionsintervallen

  Alt 27. Jul 2010, 07:02
Mein erstes Prog seit 7 Jahren oder so seid gnädig Alles durchs Internet in ner Woche gelernt, da kennt man so viele Sachen noch nicht. Leider. Jo weiß das es vor doppelten Sachen strotzt deshalb frag ich ja wie man es verändern kann ^^

Das mit den Arrays hab ich mir auch überlegt. Auch ein durchschalten der Labels mit einer for to schleife hab ich versucht aber nicht hinbekommen. Mal schauen was es da gibt.

Nichts gegen if! Das Programm an sich funktioniert wunderbar ^^

Ich werde erstmal
Delphi-Quellcode:
hour := trunc(Taktimpuls);
minute := round( (Taktimpuls - hour) * 6/10 * 100);
Darstellung := EncodeTime(hour, minute, s, ms) ;
auslagern.

Beim Rest muss ich mich mal mehr bei Arrays einlesen und wie ich die ganze if kacke losbekomme.

Thx für eure Hilfe!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz