Autor Beitrag
Klauswurstsuppe
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 15.06.09 12:06 
hihi

habe folgendes problem und zwar will ich die EncodeTime funktion nutzen, wobei hour, min und sek aus 3 edit fenstern gelesen werden sollen.
ausblenden Delphi-Quelltext
1:
Zeit:=EncodeTime(hh,mm,ss,0)					

wobei für hh,mm,ss gilt:
ausblenden Delphi-Quelltext
1:
2:
3:
 hh:=StrToFloat(Edit1.Text);
 mm:=StrToFloat(Edit2.Text);
 ss:=StrToFloat(Edit3.Text);

allerdings sind hh,mm,ss vom typ single, aber EncodeTime braucht ja die variablen vom typ Word.

gibt es irgende Möglichkeit Single To Word zu konvertieren ?

danke :)

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus VCL (Visual Component Library) verschoben am Mo 15.06.2009 um 13:19
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 15.06.09 12:11 
Round macht das, aber am besten nimm direkt Word als Datentyp und StrToInt...
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 15.06.09 13:10 
user profile iconKlauswurstsuppe hat folgendes geschrieben Zum zitierten Posting springen:
gibt es irgende Möglichkeit Single To Word zu konvertieren ?

danke :)


Eigentlich nicht so richtig, denn Single ist eine Realtyp, d.h. es ist eine Zahl die Nachkommastellen enthalten kann, also z.B. -12345,678. Word dagegen ist ein Integertyp ohne Vorzeichen, also z.B. 12345. Du siehst also die Probleme. Zuerst sind da die Nachkommastellen und dann noch das Vorzeichen zu viel.

Aber wenn dich das nicht stört, dann kannst du es trotzdem konvertieren, nur eben mit Verlusten.

Abs() macht eine Zahl absolut, d.h. ohne Vorzeichen, z.B. aus -12,34 wird 12,34 oder aus -45 wir 45.
Trunc() und Round() machen aus eine Realzahl eine Integerzahl, also 12,34 wird 12.
Frac() gibt nur die Nachkommastellen zurück, also 12,34 wird 0,34.

Du müßtest wohl Abs und Trunc nutzen, also a := Trunc(Abs(b));

_________________
Popov
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 15.06.09 13:17 
Wobei die Frage immer noch offen ist, wieso die Edits als single eingelesen werden (1,5 Stunden und 40 Minuten als Eingabe zulässig?).
Klauswurstsuppe Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Mo 15.06.09 13:31 
danke für die guten antworten :)

"...nimm direkt Word als Datentyp und StrToInt..." <-- so hab ich es nun auch gemacht ^^
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mo 15.06.09 15:25 
Schau Dir mal das Control (Eingabefeld) TMaskEdit an. Dort kannst Du in der Eigenschaft 'EditFormat' einstellen, das eine Zeit der Form '12:34:67' eingegeben werden muss. Den Text prüfst und konvertierst du mit 'TryStrToTime(MyTimeMaskEdit.Text, myTime)'.

_________________
Na denn, dann. Bis dann, denn.