AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Tausender-Trennzeichen in einem Zahlenstring einfügen
Thema durchsuchen
Ansicht
Themen-Optionen

Tausender-Trennzeichen in einem Zahlenstring einfügen

Ein Thema von TypusMensch · begonnen am 16. Nov 2004 · letzter Beitrag vom 21. Nov 2004
Antwort Antwort
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#1

Tausender-Trennzeichen in einem Zahlenstring einfügen

  Alt 16. Nov 2004, 19:02
Erweiterte Funktion von Daniel B
siehe Beitrag

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;
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Tausender-Trennzeichen in einem Zahlenstring einfügen

  Alt 16. Nov 2004, 19:08
geht das nicht auch so?

s := FormatFloat(',0.00',StrToFloat(s)); das passt sich sogar an die windows-einstellungen an.

__________________________________________________ ____________

aber zumindest das:

Delphi-Quellcode:
komma := False;
for i := 1 to Length(sTemp) do
  begin
  if sTemp[i] = ',then komma := true;
  end;
geht auch so:

komma := Pos(',',stemp) > 0;
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Tausender-Trennzeichen in einem Zahlenstring einfügen

  Alt 16. Nov 2004, 19:19
Delphi-Quellcode:
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;
Edit:
---> Funktioniert nicht...

Delphi-Quellcode:
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;
---> Funktioniert einwandfrei...!

ThX
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Tausender-Trennzeichen in einem Zahlenstring einfügen

  Alt 16. Nov 2004, 19:21
Funktioniert nicht?

PS: Noch eine Optimierung...

Delphi-Quellcode:
if komma then begin
  .
  .
  .
end else begin
  .
  .
  .
end;
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
TypusMensch

Registriert seit: 29. Aug 2003
Ort: Goth-A
182 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Tausender-Trennzeichen in einem Zahlenstring einfügen

  Alt 16. Nov 2004, 19:30
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)???

Nein... bei der ersten Variante macht er teilweise Punkte zuviel...

[delphi]
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Tausender-Trennzeichen in einem Zahlenstring einfügen

  Alt 16. Nov 2004, 19:36
Zitat von TypusMensch:
Nein... bei der ersten Variante macht er teilweise Punkte zuviel...
Liegt daran dass das FormatFloat bereits das fertige Ergebnis mit Punkten liefert.

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
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
21. Nov 2004, 12:07
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 hier in der Code-Library zu finden.
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz