Autor Beitrag
piffy
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 11.11.11 09:25 
hallo

ich habe mir einen countdowntimer programiert und will diesen nun verbessern. dabei hab ich ein problem wasich nicht lösen kann und bitt um hilfe.

hier erstmal der code:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
procedure TForm1.Button1Click(Sender: TObject);
begin

if edit_h.text ='' then edit_h.Text := '0';
if edit_m.text ='' then edit_m.Text := '0';
if edit_s.text ='' then edit_s.Text := '0';


  minuten := strtoint(edit_m.text);
  minuten := minuten * 60;
  stunden := strtoint(edit_h.text);
  stunden := stunden * 3600;
  sekunden := strtoint(edit_s.text);
  sekunden := sekunden ;

  sollzeit := stunden + minuten + sekunden;
  istzeit := 0;
  if sollzeit > 0 then timer1.Enabled:= true;

end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin

aktuell := sollzeit - istzeit;
istzeit := istzeit + 1;

//--- hier ist das problem
if aktuell <61 then button1.Caption := floattostr(aktuell) + ' ' +  'Sekunden';     
//---und hier
if (aktuell >60and (aktuell < 3600then button1.Caption := floattostr(aktuell/60) + ' ' +  'Minuten';   
//--- und hier
if aktuell >3599 then button1.Caption := floattostr(aktuell/3600) + ' ' +  'Stunden';


wenn ich mir nun die restzeit auf button1 anzeigen lasse, ist die zahl (aktuell), wenn es ein bruch ist, sehr lang (viel nachkommastellen). ich habe auch schon versucht miit der delete-funktion den string zu verkürzen, aber da ich in der if anweisung aktuell als real habe und später als string, raffe ich nicht wie ich das machen soll. Eine ausgabe mit 2 Nachkommastellen wäre schön.

ich bitte um hilfe.

danke

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 11.11.11 09:42 
Hallo!

Du musst Die Zahl einfach nur formatiert ausgeben. Lies Dich mal hier ein:
www.delphi-treff.de/...ings/format-strings/

Jens

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
piffy Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 11.11.11 10:06 
erstmal danke für die antwort.

also wenn ich dem bespielen folge und
button1.Caption := format('%3.2n');
schreibe bekomm ich einen fehler. aber ich es auch bestimmt nicht richtig verstanden.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 11.11.11 10:25 
Delphi wird Dir aber sicher eine genaue Fehlermeldung geben, die Du uns sicher verrätst, oder?

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
piffy Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 11.11.11 10:29 
also war mein ansatz mit der zeile erstmal gut?!

die fehlermeldung is:
"Es gibt keine überladene Version von 'Format', die man mit diesem argument aufrufen kann."
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 11.11.11 10:44 
Ja, der Ansatz ist gut. Du musst der Funktion aber noch die Zahl übergeben, die Du formatieren möchtest.
In dem Link stand als Beispiel Output:=Format('%10.4f',[123.123456]);
Da wird die Zahl "123.123456" formatiert. Die Zahl kann aber auch in einer Variablen stehen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: piffy