![]() |
AW: Sekunden, Minuten, Stunden Rechner
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) |
AW: Sekunden, Minuten, Stunden Rechner
Zitat:
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:
Also wenn sich nichts ändert, dann wird nichts zugewiesen und auch kein OnChange ausgelöst.
if Text = NewText then
Exit; oder wenn du es doch selber machen willst (doppelt, nochmal zur Sicherheit), dann
Delphi-Quellcode:
if Edit.Text <> NewText then
Edit.Text := NewText; |
AW: Sekunden, Minuten, Stunden Rechner
Die Exe ist nett, aber er möchte wohl auch Programmieren lernen,da wären die Sourcen wohl sinnvoller.
Gruß K-H |
AW: Sekunden, Minuten, Stunden Rechner
So unterschiedlich kann man Anforderungen interpretieren - fast wie "drei Anwälte=fünf Meinungen". :-D
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. :oops: Sherlock |
AW: Sekunden, Minuten, Stunden Rechner
Naja was gibts bei der Beschreibung des TE's noch groß zu interpretieren:
Zitat:
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:
Achtung ungetestet. Programmiert in der Theorie^^
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; |
AW: Sekunden, Minuten, Stunden Rechner
:lol:
"Summe" ist jetzt aber neu, und eine weitere Interpretation der Anforderungsspezifikation. Sherlock |
AW: Sekunden, Minuten, Stunden Rechner
Zitat:
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. |
AW: Sekunden, Minuten, Stunden Rechner
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?? :lol: |
AW: Sekunden, Minuten, Stunden Rechner
Zitat:
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. |
AW: Sekunden, Minuten, Stunden Rechner
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);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz