[ros-dev] Re: [ros-bugs] [Bug 1149] Calculator bug

Jerry crashfourit at gmail.com
Mon Dec 19 05:40:25 CET 2005


At least I tried. ;)

Magnus Olsen wrote:

>Hi you fix are not right
>the problem is for convert was
>1. it did not rember wich format it should convert from
>2. it did not convert the text buffer to right format
>3. Bin did need complete bit translate
>
>it have been fix in lates trunks. and it have been on my todo list pretty
>long time.
>
>----- Original Message ----- 
>From: "Jerry" <crashfourit at gmail.com>
>To: <ros-dev at reactos.org>
>Sent: den 18 December 2005 06:17
>Subject: [ros-dev] Re: [ros-bugs] [Bug 1149] Calculator bug
>
>
>  
>
>>I think I got it fixed. Hear's the diff:
>>
>>Index: subsys/system/calc/winecalc.c
>>===================================================================
>>--- subsys/system/calc/winecalc.c    (revision 20239)
>>+++ subsys/system/calc/winecalc.c    (working copy)
>>@@ -755,32 +755,34 @@
>>             {
>>                 int i;
>>                 int w = LOWORD(wParam);
>>+                int Base;
>>+                calcfloat r;
>>+
>>+                r = calc_atof(calc.buffer, calc.numBase);
>>
>>                 if (w == ID_CALC_NS_HEX) {
>>-                    if (calc.numBase == NBASE_HEX)
>>-                        return 0;
>>-                    else
>>-                        calc.numBase = NBASE_HEX;
>>+                    Base = NBASE_HEX;
>>                 }
>>                 else if (w == ID_CALC_NS_DEC) {
>>-                    if (calc.numBase == NBASE_DECIMAL)
>>-                        return 0;
>>-                    else
>>-                        calc.numBase = NBASE_DECIMAL;
>>+                    Base = NBASE_DECIMAL;
>>+
>>                 }
>>                 else if (w == ID_CALC_NS_OCT) {
>>-                    if (calc.numBase == NBASE_OCTAL)
>>-                        return 0;
>>-                    else
>>-                        calc.numBase = NBASE_OCTAL;
>>+                    Base = NBASE_OCTAL;
>>                 }
>>                 else if (w == ID_CALC_NS_BIN) {
>>-                    if (calc.numBase == NBASE_BINARY)
>>+                    Base = NBASE_BINARY;
>>+                }
>>+
>>+                if (calc.numBase == Base){
>>                         return 0;
>>-                    else
>>-                        calc.numBase = NBASE_BINARY;
>>+                } else {
>>+                        calc.numBase = Base;
>>                 }
>>+
>>+                calc_ftoa(&calc, r, calc.buffer);
>>
>>+
>>                 for (i=0;i<CALC_NS_COUNT;i++)
>>                     SendMessage(calc.cb[60+i].hBtn, BM_SETCHECK, w ==
>>(ID_CALC_NS_HEX + i) ? 1 : 0, 0);
>>
>>@@ -2944,16 +2946,23 @@
>>
>>     switch (calc->numBase) {
>>     case NBASE_HEX:
>>-        real = calc_atof(calc->buffer, calc->numBase);
>>-        _stprintf(calc->display, TEXT("%lx"), (long)real);
>>+        //real = calc_atof(calc->buffer, calc->numBase);
>>+        //_stprintf(calc->display, TEXT("%lx"), (long)real);
>>+        //_stprintf(calc->display, TEXT("%lX"), calc->buffer);
>>+        _stprintf(calc->display, TEXT("%s"), calc->buffer);
>>         break;
>>
>>     case NBASE_OCTAL:
>>-        _stprintf(calc->display, TEXT("%lo"), (long)calc->buffer);
>>+        //real = calc_atof(calc->buffer, calc->numBase);
>>+        //_stprintf(calc->display, TEXT("%lo"), (long)real);
>>+        //_stprintf(calc->display, TEXT("%lo"), (long)calc->buffer);
>>+        _stprintf(calc->display, TEXT("%s"), calc->buffer);
>>         break;
>>
>>     case NBASE_BINARY:
>>-        _stprintf(calc->display, TEXT("%lx"), (long)calc->buffer);
>>+
>>+        //_stprintf(calc->display, TEXT("%lx"), (long)calc->buffer);
>>+        _stprintf(calc->display, TEXT("%s"), calc->buffer);
>>         break;
>>
>>     case NBASE_DECIMAL:
>>@@ -3229,8 +3238,15 @@
>>     case NBASE_OCTAL:
>>         _stprintf(buf, TEXT("%lo"), (long)r);
>>         break;
>>-    case NBASE_BINARY: // 911 - need routine here
>>-
>>+    case NBASE_BINARY: // 911 - need routine here
>>+        {
>>+          int x;
>>+          for(x=0; x < sizeof(calcfloat); x++){
>>+             if (( (long)r & (1<<( (sizeof(calcfloat)-1) -x ))) == 1<<(
>>(sizeof(calcfloat)-1) -x ) ) buf[x] = '1'; else buf[x] = '0';
>>+
>>+          };
>>+          buf[sizeof(calcfloat)]='\0';
>>+        }
>>         break;
>>     default:
>>         break;
>>
>>
>>/* End of Diff */
>>
>>Tell me if it works or not, please. Thanks.
>>
>>ReactOS.Bugzilla at reactos.org wrote:
>>
>>    
>>
>>>http://www.reactos.org/bugzilla/show_bug.cgi?id=1149
>>>
>>>
>>>
>>>
>>>
>>>------- Additional Comments From crashfourit at gmail.com  2005-12-18 05:27
>>>      
>>>
>CET -------
>  
>
>>>No, I hadd the same problem in WinXP. I'm in the process of fixing it.
>>>
>>>
>>>
>>>      
>>>
>>_______________________________________________
>>Ros-dev mailing list
>>Ros-dev at reactos.org
>>http://www.reactos.org/mailman/listinfo/ros-dev
>>    
>>
>
>_______________________________________________
>Ros-dev mailing list
>Ros-dev at reactos.org
>http://www.reactos.org/mailman/listinfo/ros-dev
>
>  
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-dev/attachments/20051219/704cf7d3/attachment.html


More information about the Ros-dev mailing list