PLN z przecinkami

0

cze,
wiecie moze jak zapisac liczby z przecinkami co 3 miejsce od konca?
np. 10000 > 10,000

0

var
S: String;
begin
S := '10000';
Insert(',', S, 3);
Caption := S;
end;

0
Function Cena(dw: int64): String;
Var
  i, j              : integer;
  s                 : String;
Begin
  For i := 1 To length(inttostr(dw)) Do
  Begin
    s := s + inttostr(dw)[i];
  End;
  j := 0;
  For i := length(s) Downto 1 Do
  Begin
    j := j + 1;
    If j = 3 Then
    Begin
      insert(',', s, i);
      j := 0;
    End;
  End;
  s := '$' + s;
  If s[2] = '-' Then
  Begin
    delete(s, 2, 1);
    s := '-' + s;
  End;
  If s[2] = ',' Then
    delete(s, 2, 1);
  result := s;
End;
0
function Cena(s:string):string;
var i,j,c:integer;
    s:string;
begin
c:=0;
j:=1;
for i:=length(s) downto 2 do
    begin
    if j mod 3 = 0 then
       begin
       Insert(',',s,Length(s)-j+1-c);
       inc(c);
       end;
    inc(j);
    end;
result:=s;
end;
0

A może po prostu:

var
s: string;
cena: real;

Begin
s := FormatFloat(',0',cena);
End;

Czyz nie prostsze :)

0

Nie, gdyż taka instrukcja wstawia spację zamiast przecinka i usuwa to co powinno byćpo przecinku (przynajmniej u mnie).

0

no i tutaj trzeba sie zastanowic nad wykorzystaniem zapisu tej liczby. Jezeli chcemy miec przcinki, to liczba nie moze byc wykorzystywana do dalszych obliczen, czyli mozemy ja zaokraglic do ktoregos miejsca po przecinku (kropce wg. standardow zagranicznych):

s := FormatFloat(',0.000',cena);

A co do tych spacji to nie wim, ale wydaje mi sie ze powinny byc przecinki, a jezeli nie to idzie wykorzystac funkcje:

s[pos(s,' ')] := ','; // pisze z pamieci ale powinno byc to cos takiego

no i zwykla petelke :)

A jezeli to nie dziala, to idzie jeszcze pokombinowac z funkcja:

for i:=1 to length(IntToStr(cena))/3 do
s := copy(IntToStr(cena),i*3,3);

Moim zdaniem jest wiele prostszych sposobow niz te u gory, ale jak wiadomo, ma zadzalac a potem bedziemy ulepszac :)

0
   //najprosciej
   DecimalSeparator:='#';
   ThousandSeparator:='_';
   x:=1234567.89;
   self.caption:=Format('%0.2n',[x]);
   //potem przywroc oryginalne wartosci separatorow
   //albo uzyj FormatFloat z odpowiednio wpisanym FormatSettings

1 użytkowników online, w tym zalogowanych: 0, gości: 1