Autor Beitrag
bf109g.01
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 20.01.10 20:14 
Hallo, ich möchte Folgendes machen:

Mit TMaskEdits möchte ich Uhrzeitgen eingeben, deren zeitl Differenz dann ausgegeben wird.
Stelle mir das so vor:

Eingabe(TMaskEdit1): "23:30"
Eingabe(TMaskEdit2): "08:30"
Ausgabe(showmessage): "09:00"

Weiß aber nicht, wie ich mit den Texten aus dem TMaskEdit umgehen soll, weils doch ein eigener Typ ist und ich nicht weiß, wie ich den umwandeln soll...
Hat jmd eine Idee / Lösung?

Thx :)
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Do 21.01.10 23:22 
Ich würde dir eine TDateTimePicker empfehlen. Die kann man so einstellen, dass da eine Zeit eingegeben werden kann.

Über die Eigenschaft .Time kommst du dann an die Zeit ran, ohne selber rechnen müssen.

Die Differenz lässt sich dann mit HourSpan oder einer der anderen Funktionen aus der Ecke berechnen. Theoretisch könntest du auch einfach die Werte voneinander abziehen, aber das kann schiefgehen, da bei TTime-Werten (die eigentlich Fließkommazahlen sind) nicht wirklich definiert ist wie der Teil vor dem Komma aussieht.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
bf109g.01 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: So 24.01.10 18:54 
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Ich würde dir eine TDateTimePicker empfehlen. Die kann man so einstellen, dass da eine Zeit eingegeben werden kann.
DAnke, das klappt.
user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
mit HourSpan oder einer der anderen Funktionen

Wie ist da die Syntax? "Hourspan" scheint der Compiler nicht zu kennen.
Hab jetzt einfach folgendes probiert, das klappt nicht:
ausblenden Delphi-Quelltext
1:
datetimepicker3.time:=HourSpan(datetimepicker1.Time,datetimepicker2.time);					
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: So 24.01.10 19:02 
Deswegen gibt es die Delphi-Hilfe. Die kannst du mit der F1-Taste aufrufen (links oben bei der Tastatur, meistens zwischen ESC und F2 ;))

Die hätte dir nämlich ausgespuckt das du bei uses "DateUtils" dazuschreiben musst und das es dann eigentlich funktionieren sollte. Wenn nicht, dann probier mal

ausblenden Delphi-Quelltext
1:
datetimepicker3.time:=HourSpan(datetimepicker1.DateTime,datetimepicker2.DateTime);					


lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
bf109g.01 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: So 24.01.10 22:38 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
Deswegen gibt es die Delphi-Hilfe.

Ja, ich weiß,m ich blick die nur meistens trotzdem nicht... :.-(
Es funktioniert trotzdem nicht: Wenn der Compiler durch die Zeile durch ist, gibt es einen Windows-Fehlerton und datetimepicker3 gibt "00:00:00" aus...
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:

Wenn nicht, dann probier mal
ausblenden Delphi-Quelltext
1:
datetimepicker3.time:=HourSpan(datetimepicker1.DateTime,datetimepicker2.DateTime);					
Macht keinen Unterschied. :(
Habs jetzt so umgeschrieben:
ausblenden Delphi-Quelltext
1:
2:
test:=HourSpan(dtp1.DateTime,dtp2.Datetime);
      dtp3.time:=test;

Im Debug-MOde mit F7 liest der Compiler die Prozedur noch bis zum Ende durch und der Signalton kommt erst ganz am Ende. Direkt davor steht im Fenster links noch 'test'= 0,9999997 oder so. Dann kommt der Ton und die Angabe ist weg...
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: So 24.01.10 23:00 
aso, sorry! HourSpan gibt auch keine DateTime-Wert zurück!!! HourSpan gibt die Stundenanzahl als Double zurück, mit den Nachkommastellen als Bruchteil von einer ganzen Stunde.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
bf109g.01 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Do 28.01.10 00:58 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
die Stundenanzahl als Double zurück
Gibts dafür keine schönere LÖsung? Habe jetzt bei eig nämlich 0,999999767 stehen und das ist halt blöd...
bf109g.01 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Di 02.02.10 14:39 
Frage dazu: Wie kann ich den Datentyp Double bearbeiten?
DoubleToStr? (Wie) Kann ich damit rechnen?
Ansonsten würde ich eben den Doublewert auf 2 NachkommaStellen runden (wie leg ich fest, auf wie viele Stellen ich runden will?) und dann in Stunden und Minuten umrechnen.

Kann ich eig. eine Kommazahl (bspw. 3,5) in TTime ändern?
Möglich wäre vllt. 3,5 in "03:30" (String) umzuschreiben und den String in TTime zu ändern (StrToTTime)...

Ka, ich bin ratlos...
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Di 02.02.10 15:47