Einzelnen Beitrag anzeigen

Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 07:50
Naja was gibts bei der Beschreibung des TE's noch groß zu interpretieren:

Zitat:
Beispiel: Nutzer gibt in edit1 '1' Stunde ein, edit2 '60' Minuten wird automatisch gerechnet und edit3 '3600' sekunden wird automatisch gerechnet.
(Was aber auch sein muss ist das wenn der nutzer '3600' Sekunden eingibt das der rechner dann die anderen 2 edit felder befüllt.)
Das dies nun nicht Sinnvoll ist (da im Prinzip der Wert von Edit1 = Edit2 = Edit3), ist eine andere Sache.

Ich gehe davon aus:
Edit1 umbenennen in StundenE , ggf. einstellen, das nur Zahlen eingegeben werden können (NumbersOnly = True)
Edit2 umbenennen in MinutenE , ggf. einstellen, das nur Zahlen eingegeben werden können (NumbersOnly = True)
Edit3 umbenennen in SekundenE, ggf. einstellen, das nur Zahlen eingegeben werden können (NumbersOnly = True)
Die Summe aller Editfelder ergibt die GESAMTZEIT, nicht wie der TE angegeben hat überall die Gleiche Zeit.
Also bei Eingabe 3600 Sekunden Stünde nur eine "1" bei Stunde, der Rest wäre 0.

Für alle die Gleiche Funktion beim OnExit hinterlegen (geht sicher auch kürzer/einfacher ist aber evtl. für einen Anfänger am leichtesten zu verstehen):

Delphi-Quellcode:
var
  iSekunden, iMinuten, iStunden : Integer;
begin
  iSekunden := 0;
  iMinuten := 0;
  iStunden := 0;
  case Sender.Name of
    SekundenE : iSekunden := strtoint(SekundenE.Text); //Hilfsvariable aus Editfeld füllen
    MinutenE : iMinuten := strtoint(MinutenE.Text); //Hilfsvariable aus Editfeld füllen
    StundenE : iStunden := strtoint(StundenE.Text); //Hilfsvariable aus Editfeld füllen
    else : Exit;
  end;

  if iSekunden > 59 then //Da 60 Sekunden = 1 Minute, dies umrechnen
  begin
    iMinuten := iMinuten + (iSekunden DIV 60); //die Minuten, die sich aus den Sekunden ergeben hinzuaddieren
    iSekunden := iSekunden MOD 60; //die korrekten Sekunden berechnen
  end;

  if iMinuten > 59 then
  begin
    iStunden := iStunden + (iMinuten DIV 60); //die Stunden, die sich aus den Minuten ergeben hinzuaddieren
    iMinuten := iMinuten MOD 60; //die korrekten Minuten berechnen
  end;

  SekundenE.Text := inttostr(iSekunden); //Hilfsvariablen ins Editfeld zurückspielen
  MinutenE.Text := inttostr(iMinuten); //Hilfsvariablen ins Editfeld zurückspielen
  StundenE.Text := inttostr(iStunden); //Hilfsvariablen ins Editfeld zurückspielen
  iSecGes := (strtoint(StundenE.Text) * 60 + strtoint(MinutenE.Text)) * 60 + strtoint(SekundenE.Text); //Gesamtsekunden (Globale Variable)
end;
Achtung ungetestet. Programmiert in der Theorie^^
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (11. Mär 2020 um 07:56 Uhr)
  Mit Zitat antworten Zitat