Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Führend Nullen erzeugen / erledigt
Adrian - Mi 10.12.03 11:59
Titel: Führend Nullen erzeugen / erledigt
Servus!
Meine Berechnung erzeugt 3 maximal 2-stellige Gleitkomma-Zahlen, die dann so abgespeichert werden sollen:
12:34:56
also der Nachkommateil entfällt vollständig, er wird abgeschnitten, nicht gerundet.
Wenn die Zahl nur einstellig ist, soll eine führende Null hin, also so
01:02:03
Jetzt habe ich zwar verschiedene Formatierungen ausprobiert, aber das Beste, was ich hinbekommen habe war dann
1: 2: 3
Gibt es eine Formatierungsoption, die das automatisch macht, oder muß ich den Weg über eine Stringumwandlung gehen und die Null selber hinzufügen?
Gruß,
Adrian
Moderiert von
tommie-lie: Topic verschoben
Killi - Mi 10.12.03 12:05
Eine Automatisierung gibt es wohl nicht, denn als Integer gibts keine Nullen und bei strings.......nee.....
am besten du machst das so:
Delphi-Quelltext
1: 2: 3: 4:
| if Length(stringzahl1) = 1 then begin stringzahl1:= '0' + stringzahl1; end; |
das mit allen 3 Zahlen...fertig!
tommie-lie - Mi 10.12.03 13:17
Format aus den SysUtils kann das nicht, aber Eugen Honeker hat eine modifizierte Format-Funktion geschrieben, die ohne die SysUtils auskommt (hauptsächlich für nonVCL-Programme) und die die API-Funktion
wvsprintf [
http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Resources/Strings/StringReference/StringFunctions/wvsprintf.asp] benutzt, die das kann, was du willst.
U.A. ist diese Funktion in Luckie's nonVCL-Toolbox (
http://www.luckie-online.de [
http://www.luckie-online.de]) zu finden, und so sieht sie aus:
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:
| function Format(fmt: string; params: array of const): string; var pdw1, pdw2: PDWORD; i: integer; pc: PCHAR; begin pdw1 := nil; if length(params) > 0 then GetMem(pdw1, length(params) * sizeof(Pointer)); pdw2 := pdw1; for i := 0 to high(params) do begin pdw2^ := DWORD(PDWORD(@params[i])^); inc(pdw2); end; GetMem(pc, 1024 - 1); try SetString(Result, pc, wvsprintf(pc, PCHAR(fmt), PCHAR(pdw1))); except Result := ''; end; if (pdw1 <> nil) then FreeMem(pdw1); if (pc <> nil) then FreeMem(pc); end; |
Ein Beispielaufruf könnte so aussehen:
Delphi-Quelltext
1: 2: 3: 4:
| label1.Caption := Format ( '%02d:%02d:%02d', [byte(Trunc(2.3)), byte(Trunc(3.99)), byte(Trunc(32.5))] ); |
Vorsicht: Damit sich diese Format-Funktion nicht mit der aus SysUtils ins Gehege kommt, sollte man sie besser umbenennen (z.B. FormatExt) oder die SysUtils nicht mit einlinken, falls man sie nicht noch anderweitig braucht.
tommie-lie - Mi 10.12.03 19:58
Diverse Massen-Anschließungen entfernt.
Adrian - Mi 10.12.03 20:09
... und ich habe mich angeschlossen und bin sehr zufrieden. :D
Danke an Alle.
Gruß,
Adrian
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!