At least I tried. ;)
Magnus Olsen wrote:
Hi you fix are not right the problem is for convert was
- it did not rember wich format it should convert from
- it did not convert the text buffer to right format
- 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@gmail.com To: ros-dev@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;elsecalc.numBase = NBASE_HEX;
Base = NBASE_HEX; } else if (w == ID_CALC_NS_DEC) {
if (calc.numBase == NBASE_DECIMAL)return 0;elsecalc.numBase = NBASE_DECIMAL;
Base = NBASE_DECIMAL;} else if (w == ID_CALC_NS_OCT) {
if (calc.numBase == NBASE_OCTAL)return 0;elsecalc.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;
elsecalc.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'; default: break;} break;/* End of Diff */
Tell me if it works or not, please. Thanks.
ReactOS.Bugzilla@reactos.org wrote:
http://www.reactos.org/bugzilla/show_bug.cgi?id=1149
------- Additional Comments From crashfourit@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@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev
Ros-dev mailing list Ros-dev@reactos.org http://www.reactos.org/mailman/listinfo/ros-dev