diff options
Diffstat (limited to 'basic/source/sbx/sbxform.cxx')
-rw-r--r-- | basic/source/sbx/sbxform.cxx | 60 |
1 files changed, 5 insertions, 55 deletions
diff --git a/basic/source/sbx/sbxform.cxx b/basic/source/sbx/sbxform.cxx index 46b6e6caa445..61fbafdd37cf 100644 --- a/basic/source/sbx/sbxform.cxx +++ b/basic/source/sbx/sbxform.cxx @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -141,12 +142,6 @@ SbxBasicFormater::SbxBasicFormater( sal_Unicode _cDecPoint, sal_Unicode _cThousa } // Funktion zur Ausgabe eines Fehler-Textes (zum Debuggen) -/* -void SbxBasicFormater::ShowError( char * sErrMsg ) -{ -// cout << "ERROR in Format$(): " << sErrMsg << endl; -} -*/ // verschiebt alle Zeichen des Strings, angefangen von der nStartPos, // um eine Position zu gr"osseren Indizes, d.h. es wird Platz f"ur // ein neues (einzuf"ugendes) Zeichen geschafft. @@ -378,19 +373,16 @@ TODO: ggf einen 'intelligenten' Peek-Parser um Rundungsfehler bei // In bFoundFirstDigit wird ggf. ein Flag gesetzt wenn eine Ziffer // gefunden wurde, dies wird dazu verwendet um 'Fehler' beim Parsen 202 // zu vermeiden, die -// // ACHTUNG: anscheinend gibt es manchmal noch Probleme mit Rundungs-Fehlern! short SbxBasicFormater::GetDigitAtPos( double dNumber, short nPos, double& dNextNumber, sal_Bool& bFoundFirstDigit ) // ACHTUNG: nPos kann auch negativ werden, f"ur Stellen nach dem Dezimal-Punkt { - double dTemp = dNumber; - double dDigit,dPos; + double dDigit; short nMaxDigit; // erst mal aus der Zahl eine positive Zahl machen: dNumber = fabs( dNumber ); - dPos = (double)nPos; // "uberpr"ufe ob Zahl zu klein f"ur angegebene Stelle ist nMaxDigit = (short)get_number_of_digits( dNumber ); @@ -616,11 +608,6 @@ short SbxBasicFormater::AnalyseFormatString( const String& sFormatStrg, break; case '%': bPercent = sal_True; - /* old: - bPercent++; - if( bPercent>1 ) - return -2; // ERROR: zu viele Prozent-Zeichen - */ break; case '(': bCurrency = sal_True; @@ -641,11 +628,6 @@ short SbxBasicFormater::AnalyseFormatString( const String& sFormatStrg, nState = -1; // breche jetzt das Z"ahlen der Stellen ab bScientific = sal_True; } - /* old: - bScientific++; - if( bScientific>1 ) - return -3; // ERROR: zu viele Exponent-Zeichen - */ break; // EIGENES Kommando-Zeichen, das die Erzeugung der // Tausender-Trennzeichen einschaltet @@ -692,23 +674,11 @@ void SbxBasicFormater::ScanFormatString( double dNumber, - sonstige Fehler ? mehrfache Dezimalpunkte, E's, etc. --> Fehler werden zur Zeit einfach ignoriert */ - /*nErr =*/ AnalyseFormatString( sFormatStrg,nNoOfDigitsLeft,nNoOfDigitsRight, + AnalyseFormatString( sFormatStrg,nNoOfDigitsLeft,nNoOfDigitsRight, nNoOfOptionalDigitsLeft,nNoOfExponentDigits, nNoOfOptionalExponentDigits, bPercent,bCurrency,bScientific,bGenerateThousandSeparator, nMultipleThousandSeparators ); - /* es werden alle Fehler ignoriert, wie in Visual-Basic - if( nErr!=0 ) - { - char sBuffer[512]; - - //sprintf( sBuffer,"bad format-string >%s< err=%i",sFormatStrg,nErr ); - strcpy( sBuffer,"bad format-string" ); - ShowError( sBuffer ); - } - else - */ - { // Spezialbehandlung f"ur Spezialzeichen if( bPercent ) dNumber *= 100.0; @@ -736,8 +706,6 @@ void SbxBasicFormater::ScanFormatString( double dNumber, bDigitPosNegative = false; if( bScientific ) { - //if( nNoOfOptionalDigitsLeft>0 ) - // ShowError( "# in scientific-format in front of the decimal-point has no effect" ); // beim Exponent ggf. "uberz"ahlige Stellen vor dem Komma abziehen dExponent = dExponent - (double)(nNoOfDigitsLeft-1); nDigitPos = nMaxDigit; @@ -781,11 +749,10 @@ void SbxBasicFormater::ScanFormatString( double dNumber, // Behandlung der Mantisse if( bFirstDigit ) { - //org:bFirstDigit = sal_False; // ggf. Vorzeichen erzeugen // Bem.: bei bCurrency soll das negative // Vorzeichen durch () angezeigt werden - if( bIsNegative && !bCreateSign/*!bCurrency*/ && !bSignHappend ) + if( bIsNegative && !bCreateSign && !bSignHappend ) { // nur einmal ein Vorzeichen ausgeben bSignHappend = sal_True; @@ -959,19 +926,9 @@ void SbxBasicFormater::ScanFormatString( double dNumber, else StrAppendChar( sReturnStrg,'+' ); } - //else - // ShowError( "operator e/E did not find + or -" ); } - //else - // ShowError( "operator e/E ended with 0" ); break; case ',': - // ACHTUNG: nur falls Zahl bisher ausgegeben wurde - // das Zeichen ausgeben - ////--> Siehe Kommentar vom 11.7. in AnalyseFormatString() - ////if( !bFirstDigit ) - //// // gebe Tausender-Trennzeichen aus - //// StrAppendChar( sReturnStrg,cThousandSep ); break; case ';': break; @@ -1001,12 +958,9 @@ void SbxBasicFormater::ScanFormatString( double dNumber, ParseBack( sReturnStrg,sFormatStrg,i-1 ); // Sonderzeichen gefunden, gebe N"ACHSTES // Zeichen direkt aus (falls es existiert) - // i++; c = sFormatStrg.GetChar( ++i ); if( c!=0 ) StrAppendChar( sReturnStrg,c ); - //else - // ShowError( "operator \\ ended with 0" ); break; case CREATE_1000SEP_CHAR: // hier ignorieren, Aktion wurde schon in @@ -1018,9 +972,6 @@ void SbxBasicFormater::ScanFormatString( double dNumber, ( c>='A' && c<='Z' ) || ( c>='1' && c<='9' ) ) StrAppendChar( sReturnStrg,c ); - // else - // ignorieren ! - // ehemals: ShowError( "bad character in format-string" ); } } // Format-String wurde vollst"andig gescanned, @@ -1042,7 +993,6 @@ void SbxBasicFormater::ScanFormatString( double dNumber, // ABER nur Stellen nach dem Dezimal-Punkt k"onnen gel"oscht werden if( nNoOfDigitsRight>0 ) ParseBack( sReturnStrg,sFormatStrg,sFormatStrg.Len()-1 ); - } } String SbxBasicFormater::BasicFormatNull( String sFormatStrg ) @@ -1086,7 +1036,6 @@ String SbxBasicFormater::BasicFormat( double dNumber, String sFormatStrg ) String sPosFormatStrg = GetPosFormatString( sFormatStrg, bPosFormatFound ); String sNegFormatStrg = GetNegFormatString( sFormatStrg, bNegFormatFound ); String s0FormatStrg = Get0FormatString( sFormatStrg, b0FormatFound ); - //String sNullFormatStrg = GetNullFormatString( sFormatStrg, bNullFormatFound ); String sReturnStrg; String sTempStrg; @@ -1166,3 +1115,4 @@ sal_Bool SbxBasicFormater::isBasicFormat( String sFormatStrg ) return sal_False; } +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |