AGB  ·  Datenschutz  ·  Impressum  







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

Sekunden, Minuten, Stunden Rechner

Ein Thema von FG53 · begonnen am 9. Mär 2020 · letzter Beitrag vom 11. Mär 2020
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.811 Beiträge
 
Delphi 12 Athens
 
#1

AW: Sekunden, Minuten, Stunden Rechner

  Alt 9. Mär 2020, 13:24
Die Links schießen mMn über das Ziel hinaus. Ein Beispiel aus der Realität sagt, daß ein Spielfilm 100 Minuten dauern kann. Was du brauchst ist zweierlei: ein Ereignis, daß Dir sagt, wenn die Eingabe in einem der Felder getätigt wurde, und eine Formel, die von einem der Werte in die jeweils anderen beiden umrechnet.
Ersteres macht Delphi von Haus aus und Du könntest dazu zB das Delphi-Referenz durchsuchenTEdit.OnChange Ereignis der TEdit Felder nehmen. Beachte bitte, daß Die gleich folgende Rechnerei in die Hose geht, wenn Dein Anwender etwas anderes als Zahlen eingibt!! Delphi-Referenz durchsuchenVCL.StdCtrls.TEdit.NumbersOnly hilft bei VCL-Anwendungen.
Die Rechnerei ist simpel, wenn Du weißt, wieviele Minuten eine Stunde hat, und wieviele Sekunden in einer Minute stecken (Spoiler: es ist beides mal die gleiche Zahl).
Lies also nach wie man einem TEdit ein OnChange Ereignis zuweist, und lies nach, wie man einem TEdit.Text einen neuen Inhalt gibt. Dann hast Du vermutlich nach etwas Denkarbeit drei Methoden und irgendwas läuft mächtig schief, weil *Trommelwirbel* OnChange ständig befeuert wird.
Du mußt also wissen, welches Feld tatsächlich vom Anwender verändert wurde, und welches aus der Berechnung heraus "automatisch". Dazu kannst Du zB erkennen, in welches Feld der Anwender zur Eingabe gegangen ist, und zwar mit Delphi-Referenz durchsuchenTEdit.OnEnter. Dann darfst Du die Felder, die nicht gerade bearbeitet werden nicht auf das OnChange reagieren lassen, und fertig.

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

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

AW: Sekunden, Minuten, Stunden Rechner

  Alt 9. Mär 2020, 13:34
Sherlock, ich danke dir für deine Antwort. Das hilft mir sehr weiter. Ich versuche das mal und gebe später wieder bescheid, danke nochmal.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.174 Beiträge
 
Delphi 12 Athens
 
#3

AW: Sekunden, Minuten, Stunden Rechner

  Alt 9. Mär 2020, 13:58
Also ich würde schon empfehlen direkt TDateTime als Basis-Zielspeicher zu nehmen,
und dann wie himitsu vorgeschlagen hat
- die drei Edits extrahieren und mit EncodeDateTime und z.B. in MilliSeconds umrechnen,
- daraus den Zielspeicher zusammenrechnen, http://www.delphibasics.co.uk/RTL.as...IncMillisecond
- danach wieder aus dem TDateTime die berechneten Daten extrahieren mit DecodeDateTime
- die OnChange Events kurz abzuschalten,
- und die Edits mit den Ergebnissen restaurieren,
- dann die OnChange Events wieder einschalten

Der Vorteil von TDateTime wäre, das es dann auch mit Tagen, Monaten usw. klarkommen könnte,
und die ganzen Utils drumherum ziemlich robust und getestet sind.
  Mit Zitat antworten Zitat
HolgerX

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

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
44.372 Beiträge
 
Delphi 12 Athens
 
#5

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;
Ein Therapeut entspricht 1024 Gigapeut.
  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
 
#7

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.811 Beiträge
 
Delphi 12 Athens
 
#9

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
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 05:39 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