![]() |
Tausender-Trennzeichen in einem Zahlenstring einfügen
Erweiterte Funktion von Daniel B
![]() Erweitert wurde, dass sowohl Kommazahlenstrings, als auch einfache Zahlenstrings unterschieden werden und daraufhin die Trennzeichen gesetzt werden. ThX an Daniel für die Vorlage...
Delphi-Quellcode:
function ThouSep2(sTemp: String; cTemp: Char): String;
var iTemp: Integer; i : Integer; komma:boolean; begin komma := False; for i := 1 to Length(sTemp) do begin if sTemp[i] = ',' then komma := true; end; if komma = True then begin Result := sTemp; iTemp := Length(sTemp) -5; while iTemp > 1 do begin Insert(cTemp, Result, iTemp); iTemp := iTemp -3; end; end; if komma = False then begin Result := sTemp; iTemp := Length(sTemp) -2; while iTemp > 1 do begin Insert(cTemp, Result, iTemp); iTemp := iTemp -3; end; Result := Result + ',00'; end; end; |
Re: Tausender-Trennzeichen in einem Zahlenstring einfügen
geht das nicht auch so?
Delphi-Quellcode:
das passt sich sogar an die windows-einstellungen an.
s := FormatFloat(',0.00',StrToFloat(s));
__________________________________________________ ____________ aber zumindest das:
Delphi-Quellcode:
geht auch so:
komma := False;
for i := 1 to Length(sTemp) do begin if sTemp[i] = ',' then komma := true; end;
Delphi-Quellcode:
komma := Pos(',',stemp) > 0;
|
Re: Tausender-Trennzeichen in einem Zahlenstring einfügen
Delphi-Quellcode:
Edit:
function ThouSep2(sTemp: String; cTemp: Char): String;
var iTemp: Integer; begin sTemp := FormatFloat(',0.00',StrToFloat(sTemp)); //die einzige einzufügende Zeile - LOOOOL Result := sTemp; iTemp := Length(sTemp) -5; while iTemp > 1 do begin Insert(cTemp, Result, iTemp); iTemp := iTemp -3; end; end; ---> Funktioniert nicht...
Delphi-Quellcode:
---> Funktioniert einwandfrei...!
function ThouSep2(sTemp: String; cTemp: Char): String;
var iTemp: Integer; komma:boolean; begin komma := Pos(',',stemp) > 0; if komma = True then begin Result := sTemp; iTemp := Length(sTemp) -5; while iTemp > 1 do begin Insert(cTemp, Result, iTemp); iTemp := iTemp -3; end; end; if komma = False then begin Result := sTemp; iTemp := Length(sTemp) -2; while iTemp > 1 do begin Insert(cTemp, Result, iTemp); iTemp := iTemp -3; end; Result := Result + ',00'; end; end; ThX |
Re: Tausender-Trennzeichen in einem Zahlenstring einfügen
Funktioniert nicht?
PS: Noch eine Optimierung...
Delphi-Quellcode:
if komma then begin
. . . end else begin . . . end; |
Re: Tausender-Trennzeichen in einem Zahlenstring einfügen
Wie bereits oben editiert, klappt das nicht so ganz. Außerdem ging es mir vorwiegend um die Trennzeichen (Trausender-Punkt).
Wenn man aber selbst vorher nicht weiß, was der User angibt (Zahl mit oder ohne Komma)??? :wink: Nein... bei der ersten Variante macht er teilweise Punkte zuviel... :? [delphi] |
Re: Tausender-Trennzeichen in einem Zahlenstring einfügen
Zitat:
Funktioniert DOCH:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; var s1,s2,s3: string; r1: extended; function ThouSep2(s: String): String; overload; begin Result := FormatFloat(',0.00',StrToFloat(s)); //die einzige einzufügende Zeile - LOOOOL end; function ThouSep2(r: extended): String; overload; begin Result := FormatFloat(',0.00',r); //die einzige einzufügende Zeile - LOOOOL end; begin s1 := '103493913495,46'; r1 := 138420083240.13; s2 := ThouSep2(s1); s3 := ThouSep2(r1); writeln(s2); writeln(s3); readln; end. Ausgabe: 103.493.913.495,46 138.420.083.240,13 |
DP-Maintenance
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Zurück in die öffentl. DP. Source ist ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz