From 977706519758a90d80f4b2f67ff25ddec6af7b88 Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 23 Sep 2007 10:26:00 +0000 Subject: [PATCH] * Fixed carry bug in conversion of currency to string git-svn-id: trunk@8612 - --- rtl/inc/sstrings.inc | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/rtl/inc/sstrings.inc b/rtl/inc/sstrings.inc index 75e142c532..2a17283a21 100644 --- a/rtl/inc/sstrings.inc +++ b/rtl/inc/sstrings.inc @@ -562,7 +562,6 @@ begin end; Dec(reslen,r); end; - { rounding string if r > 0 } if r > 0 then begin @@ -570,17 +569,23 @@ begin k:=0; for j:=0 to r do begin - buf[i]:=chr(ord(buf[i]) + k); - if buf[i] >= '5' then - k:=1 + if (k=1) and (buf[i]='9') then + buf[i]:='0' else - k:=0; + begin + buf[i]:=chr(ord(buf[i]) + k); + if buf[i] >= '5' then + k:=1 + else + k:=0; + end; Inc(i); - if i>tlen then + if i>tlen then break; end; + If (k=1) and (buf[i-1]='0') then + buf[i]:=chr(Ord(buf[i])+1); end; - { preparing result string } if reslen