Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - problem mit stringlänge
piffy - Fr 11.11.11 09:25
Titel: problem mit stringlänge
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:
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;
if aktuell <61 then button1.Caption := floattostr(aktuell) + ' ' + 'Sekunden'; if (aktuell >60) and (aktuell < 3600) then button1.Caption := floattostr(aktuell/60) + ' ' + 'Minuten'; 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
Gausi: Delphi-Tags hinzugefügt
piffy - 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 - Fr 11.11.11 10:25
Delphi wird Dir aber sicher eine genaue Fehlermeldung geben, die Du uns sicher verrätst, oder?
piffy - 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 - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!