AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sekunden, Minuten, Stunden Rechner

Ein Thema von FG53 · begonnen am 9. Mär 2020 · letzter Beitrag vom 11. Mär 2020
Antwort Antwort
Seite 2 von 3     12 3   
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#11

AW: Sekunden, Minuten, Stunden Rechner

  Alt 9. Mär 2020, 15:04
Hmm..

Dir geht es darum, dass in den jeweiligen Edits ein beliebiger Wert für z.B. Minuten eingegeben werden kann und daraus dann ein gültiger Zeitwert errechnet wird..

Dann würde es doch so gehen:

Delphi-Quellcode:

uses
  DateUtils,...

procedure TForm1.EditHourChange(Sender: TObject);
var
  DT : TDateTime;
begin
  DT := 0; // 00:00:00
  DT := IncHour(DT, StrToIntDef(EditHour.Text,0));
  DT := IncMinute(DT, StrToIntDef(EditMinute.Text,0));
  DT := IncSecond(DT, StrToIntDef(EditSekunde.Text,0));

  // Mach was mit dem DT
  EditTime.Text := DateTimeToStr(DT);
end;

Es können somit 3 Stunden, 157 Minuten und 2003 Sekunden eingegeben werden und Du würdest dafür den richtige Uhrzeit im TDateTime Format erhalten.

(Dazu natürlich dieses Event in jedem OnChange der 3 Edits zuweisen)
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)

Geändert von HolgerX ( 9. Mär 2020 um 15:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.100 Beiträge
 
Delphi 12 Athens
 
#12

AW: Sekunden, Minuten, Stunden Rechner

  Alt 9. Mär 2020, 15:39
und irgendwas läuft mächtig schief, weil *Trommelwirbel* OnChange ständig befeuert wird.
Eigentlich nicht nötig.
Es kann an alle Edits die selbe Ereignismethode dran.
Zusammenrechnen und zerlegen ist ja überal gleicht.
(gut, wenn man was bei Minuten einträgt, dann werden die Sekunden sich nicht ändern, aber ist ja egal ob man deren Text auch nochmal zuweist)

Aber wie schon gesagt, am Besten OnExit statt OnChange.
Dann die richtigen Werte ausrechen
und einfach überall den aktuellen Wert zuweisen.

Im Setter von TEdit.Text ist bereits ein passender Code einebaut.
Delphi-Quellcode:
if Text = NewText then
  Exit;
Also wenn sich nichts ändert, dann wird nichts zugewiesen und auch kein OnChange ausgelöst.

oder wenn du es doch selber machen willst (doppelt, nochmal zur Sicherheit), dann
Delphi-Quellcode:
if Edit.Text <> NewText then
  Edit.Text := NewText;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Alt 9. Mär 2020, 17:16     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#13

AW: Sekunden, Minuten, Stunden Rechner

  Alt 9. Mär 2020, 21:18
Die Exe ist nett, aber er möchte wohl auch Programmieren lernen,da wären die Sourcen wohl sinnvoller.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Alt 9. Mär 2020, 23:18     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.760 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 07:21
So unterschiedlich kann man Anforderungen interpretieren - fast wie "drei Anwälte=fünf Meinungen".

Ich verstand es so, daß es ein Programm gibt, dem man eine Dauer/ein Intervall in Sekunden mitgeben kann - ich sah keine Uhrzeit im Ursprungsposting. Der Anwender soll die Wahl haben, wie er diese Zeitspanne eingeben will, dieser geplante Launcher erledigt die Umrechnung für ihn. Gibt er also 2 Stunden ein, werden die anderen Felder mit 120 Minuten bzw 7200 Sekunden befüllt. An die Anwendung wird als Parameter dann eben "7200" übergeben oder so...

@Himitsu: Oh Mann, sag mir bitte, das es das erst seit sehr kurzer Zeit gibt - meinetwegen auch nach geologischen Maßstab.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
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
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.760 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 09:05

"Summe" ist jetzt aber neu, und eine weitere Interpretation der Anforderungsspezifikation.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

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

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 09:18

"Summe" ist jetzt aber neu, und eine weitere Interpretation der Anforderungsspezifikation.

Sherlock
Jaein^^

Er möchte z.B. 3600 Sekunden eingeben und das entsprechend in die Editfelder umgesetzt haben.
Ein Anzeige, die quasi 3mal das Gleiche aussagt (3600 Sec. = 60 Min. = 1 Std.), macht in Anbetracht dessen, da er es in Sekunden "weitergeben" will nicht viel Sinn.

Besser ist, das der Benutzer eingibt er möchte (um beim Beispiel zu bleiben) 3600 Sekunden haben.
Diese werden dann korrekt umgerechnet und angezeigt, so das der Benutzer dann weiß, das seine 3600 Sekunden einer Stunde entsprechen.
Die Sekunden lassen sich ja dann weiterhin problemlos berechnen (s.o.).

Fraglich ist für mich nur, ob die alten Werte beibehalten werden sollen (von den nicht geänderten Feldern) oder jedesmal eine komplette neu Berechnung erfolgen soll.
Ich werde meinen Post dahingehend mal ändern, denn seine Beschreibung sagt eher eine komplette neu Berechnung aus.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
FG53

Registriert seit: 29. Mai 2015
14 Beiträge
 
#18

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 09:24
Danke nochmal euch allen für dir Antworten. Das ding ist es soll weder eine bestimmte Uhrzeit ausgerechnet werden. Noch soll eine Zeitangabe auf 3 Edit Felder aufgeteilt werden. Die Frühlingrolle hat recht es soll für Runterfahren des Pc benutzt werden. Im CMD braucht man eine Sekunden angabe. Allerdings soll der Benutzer die Freiheit haben statt Sekunden '12' Stunden angeben zu können und ich brauche dann die Zahl in Sekunden für CMD.

Aktuell bin ich nach einer langen Programmier Pause wieder am Start und scheitere teilweise an den kleinsten dingen. Ich kriege es nicht mal mehr hin das ich ein editfeld mit 60 multipliziere und in einem anderen editfeld ausgebe. Tipps??
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

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

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 09:43
Danke nochmal euch allen für dir Antworten. Das ding ist es soll weder eine bestimmte Uhrzeit ausgerechnet werden. Noch soll eine Zeitangabe auf 3 Edit Felder aufgeteilt werden. Die Frühlingrolle hat recht es soll für Runterfahren des Pc benutzt werden. Im CMD braucht man eine Sekunden angabe. Allerdings soll der Benutzer die Freiheit haben statt Sekunden '12' Stunden angeben zu können und ich brauche dann die Zahl in Sekunden für CMD.

Aktuell bin ich nach einer langen Programmier Pause wieder am Start und scheitere teilweise an den kleinsten dingen. Ich kriege es nicht mal mehr hin das ich ein editfeld mit 60 multipliziere und in einem anderen editfeld ausgebe. Tipps??
Zum Editfeld rechnen:
Edit2.text := inttostr(strtoint(Edit1.text) * 60);

Zu deiner "Anforderung": Es kann dem Benutzer doch egal sein, wieviele Sekunden das nachher tatsächlich sind.
Lass ihn eine (sinnvolle) Zeitangabe machen (z.B. 12 Stunden) und es wird im Hintergrund umgerechnet und umgesetzt.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
FG53

Registriert seit: 29. Mai 2015
14 Beiträge
 
#20

AW: Sekunden, Minuten, Stunden Rechner

  Alt 10. Mär 2020, 09:50
Daran habe ich auch gedacht Moombas allerdings wollte ich ihn auch die Freiheit geben in Minuten oder in Sekunden zu schreiben.
Mittlerweile bin ich dazu gekommen. Ich wollte zuerst mit integer arbeiten allerdings beim hochrechnen hat er dann logischerweise
immer einen Fehler gegeben. Jetzt ist der Code mit float. Allerdings gibt er mit jetzt einen Fehler wenn ich was eingebe und dann
das Feld wieder Lösche jemand ne idee. Und nebenbei ich weiß das ist nicht die eleganteste lösung aber sie macht das was ich brauche.
Nebenbei habe ich das mit der Zahl nicht hinbekommen deswegen habe ich einfach ein Label erstellt dem ich die Caption 60 gegeben habe;
Das werde ich wahrscheinlich im nachhinein einfach visible fals stellen.

Code:
procedure TForm1.Edit1Change(Sender: TObject);
begin
edit2.Text := floattostr (strtofloat(edit1.Text) * strtofloat(label7.caption));


end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
edit3.Text := floattostr (strtofloat(edit2.Text) * strtofloat(label7.caption));
edit1.Text := floattostr (strtofloat(edit2.Text) / strtofloat(label7.caption));
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
edit2.Text := floattostr (strtofloat(edit3.Text) / strtofloat(label7.caption));
end;

Noch eine zusätzliche kleine Frage weiß einer wie ich das hinbekomme denn auf diese weiße funktioniert es nicht.
Der inhalt des edit Feldes wird nicht ausgelesen.
Code:
ShellExecute(0, nil, 'cmd.exe', '/k shutdown -s -f -t (edit3.text) & exit', nil, SW_SHOWNORMAL);

Geändert von FG53 (10. Mär 2020 um 10:31 Uhr) Grund: Zusätzliche Frage
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18:26 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