From fea0787cd7c6038eff01911f9268adf6d653ff12 Mon Sep 17 00:00:00 2001 From: "Alexander S.Kresin" Date: Thu, 19 Jul 2001 08:37:30 +0000 Subject: [PATCH] 2001-07-19 12:40 GMT+3 Alexander Kresin --- harbour/ChangeLog | 4 ++ harbour/source/rtl/transfrm.c | 70 +++++++++++++++++++---------------- 2 files changed, 43 insertions(+), 31 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 104acebd60..4479aaf5a3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,7 @@ +2001-07-19 12:40 GMT+3 Alexander Kresin + * source/rtl/transfrm.c + * added some code for proper handling of numeric parameters + 2001-07-18 16:10 UTC-0800 Ron Pinkas * source/vm/macro.c * source/vm/hvm.c diff --git a/harbour/source/rtl/transfrm.c b/harbour/source/rtl/transfrm.c index 1bb95f6e3d..711a5d380a 100644 --- a/harbour/source/rtl/transfrm.c +++ b/harbour/source/rtl/transfrm.c @@ -395,50 +395,56 @@ HB_FUNC( TRANSFORM ) szStr[ i ] = byParamL; } - for( i = 0; i < ulPicLen; i++ ) - { - cPic = szPic[ i ]; - if( cPic == '9' || cPic == '#' ) - szResult[ i ] = szStr[ iCount++ ]; /* Just copy */ - else if( cPic == '.' ) + if( ulPicLen ) + for( i = 0; i < ulPicLen; i++ ) { - if( uiPicFlags & PF_NUMDATE ) /* Dot in date */ - szResult[ i ] = cPic; - else /* Dot in number */ + cPic = szPic[ i ]; + if( cPic == '9' || cPic == '#' ) + szResult[ i ] = szStr[ iCount++ ]; /* Just copy */ + else if( cPic == '.' ) { - if( uiPicFlags & PF_EXCHANG ) /* Exchange . and , */ + if( uiPicFlags & PF_NUMDATE ) /* Dot in date */ + szResult[ i ] = cPic; + else /* Dot in number */ { - szResult[ i ] = ','; + if( uiPicFlags & PF_EXCHANG ) /* Exchange . and , */ + { + szResult[ i ] = ','; + iCount++; + } + else + szResult[ i ] = szStr[ iCount++ ]; + } + } + else if( cPic == '$' || cPic == '*' ) + { + if( szStr[ iCount ] == ' ' ) + { + szResult[ i ] = cPic; iCount++; } else szResult[ i ] = szStr[ iCount++ ]; } - } - else if( cPic == '$' || cPic == '*' ) - { - if( szStr[ iCount ] == ' ' ) + else if( cPic == ',' ) /* Comma */ { - szResult[ i ] = cPic; - iCount++; - } - else - szResult[ i ] = szStr[ iCount++ ]; - } - else if( cPic == ',' ) /* Comma */ - { - if( iCount && isdigit( ( int ) szStr[ iCount - 1 ] ) ) - { /* May we place it */ - if( uiPicFlags & PF_EXCHANG ) - szResult[ i ] = '.'; + if( iCount && isdigit( ( int ) szStr[ iCount - 1 ] ) ) + { /* May we place it */ + if( uiPicFlags & PF_EXCHANG ) + szResult[ i ] = '.'; + else + szResult[ i ] = ','; + } else - szResult[ i ] = ','; + szResult[ i ] = ' '; } else - szResult[ i ] = ' '; + szResult[ i ] = cPic; } - else - szResult[ i ] = cPic; + else + { + strcpy( szResult, szStr ); + i = strlen( szStr ); } if( ( uiPicFlags & PF_PARNEG ) && dValue < 0 ) @@ -475,7 +481,9 @@ HB_FUNC( TRANSFORM ) hb_xfree( szStr ); } else + { ulResultPos = 0; + } } /* ======================================================= */