关于 vc .net调试的问题 我用的是 vs 2003,在调试程序时发现运行的状况和显示的不一样,举个例子:在进入一个swich后,运行到一个case中,运行完break语句后应该是跳出这个swich才对啊,它怎么又跑到下一个case中去了,但是好像又不是运行的另外一个case的语句。还有一种情况,我明明把一些语句给注释掉了,为什么还是老跑到里面去?真是郁闷,大家有遇到这样的问题吗?怎么解决?注:我现里面用多了多线程。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 NET应该没有这种问题.一定是你跟不上它的调用方式.自己的思路混乱了吧 代码就是这个样子,老是出错,出错信息为:"Run - Time Check Failure #3 - Thre variable 'tok_len' is being used without bein defined."string_t DateFormat::format (const Date* date, const string_t& pattern) const{ // the length of the format is usually a good guess of the number // of chars in the result. Might save us a few bytes sometimes // Add + 10 for cases like mmmm dddd string_t result; size_t size = pattern.size (); result.reserve (size + 10); size_t i = 0; const TCHAR* pattern_str = pattern.c_str (); //DateTimeExpr dte (date->local_time ()); // The date object is not a local time //BUGS: cannot calculate the correct time when used local ticks DateTimeExpr dte (date->time ()); int hour_offset = (int) (TimeZone::current_time_zone ()->utc_offset (date) / ticks_per_hour); if (hour_offset < 0 && (int)dte.tm_hour < -(hour_offset)) { dte.tm_mday--; dte.tm_hour += 24; } dte.tm_hour += hour_offset; while (i < size) { int tok_len; TCHAR ch = pattern_str [i]; switch (ch) { // // Time Formats // case _T('h'): { // hour, [1, 12] tok_len = count_repeat (pattern_str, size, i, ch); unsigned int hr = dte.tm_hour % 12; if (hr == 0) hr = 12; result_pad (result, hr, tok_len == 1 ? false : hr > 9 ? false : true); break; } case _T('H'): { // hour, [0, 23] tok_len = count_repeat (pattern_str, size, i, ch); result_pad (result, dte.tm_hour, tok_len == 1 ? false : (dte.tm_hour > 9 ? false : true)); break; } case _T('m'): { // minute, [0, 59] tok_len = count_repeat (pattern_str, size, i, ch); result_pad (result, dte.tm_min, tok_len == 1 ? false : dte.tm_min > 9 ? false : true); break; } case _T('s'): // second [0, 29] { tok_len = count_repeat (pattern_str, size, i, ch); result_pad (result, dte.tm_sec, tok_len == 1 ? false : dte.tm_sec > 9 ? false : true); break; } case _T('p'): // AM/PM. { tok_len = 1; result.append (SimpleDateFormat::current_time_indicator (dte.tm_hour < 12)); break; } case _T('z'): // timezone case _T('Z'): { CFLASSERT (false); // pls impl. break; } // // Date tokens // case _T('d'): { // day. d(dd) = day of month tok_len = count_repeat (pattern_str, size, i, ch); result_pad (result, dte.tm_mday, tok_len == 1 ? false : dte.tm_mday > 9 ? false : true); break; } case _T('e'): { tok_len = 1; result.append (SimpleDateFormat::current_week_day (dte.tm_wday, true)); break; } case _T('E'): { tok_len = 1; result.append (SimpleDateFormat::current_week_day (dte.tm_wday, false)); break; } case _T('w'): { tok_len = 1; result_pad (result, dte.tm_wday, false); break; } case _T('W'): { CFLASSERT (false); // TODO: break; } case _T('M'): { /*// Month.m(m?) = month # (with leading 0 if two mm) // mmm = 3 letter name // mmmm+ = full name */ tok_len = count_repeat (pattern_str, size, i, ch); int month = dte.tm_mon; if (tok_len == 1) result_pad (result, month, false); else if (tok_len == 2) result_pad (result, month, month > 9 ? false : true); else if (tok_len == 3) result.append (SimpleDateFormat::current_month (month, true)); else result.append (SimpleDateFormat::current_month (month, false)); break; } case _T('y'): { /* Year. y(y?) = two digit year, with leading 0 if yy yyy+ full year, if yyy and yr < 1000, displayed as three digits*/ tok_len = count_repeat (pattern_str, size, i, ch); int year = tok_len > 2 ? dte.tm_year : dte.tm_year % 100; if (tok_len == 1) result_pad (result, year, false); else if (tok_len == 2) result_pad (result, year, (year < 10)); else result_pad (result, year, false); break; } case ('g'): case ('G'): // Era name CFLASSERT (false); break; // // Other // case '\'': { // literal size_t l = i + 1; while (true) { TCHAR c = pattern_str[l++]; if (c == '\'') { if (pattern_str[l] != '\'') // Peek next to check double '' break; else l++; // skip it } result.append (1, c); } tok_len = (int) (l - i); break; } default: // catch all unkown token { result.append (1, ch); tok_len = 1; break; } } i += tok_len; } return result;} 如何hook本进程对注册表的读取 求助:球面点三维坐标到二维坐标的转换 100分求个服务的代码? 能否提供一个在某固定坐标点击鼠标左键的例程 如何往工程中添加一个已经存在的类阿? MFC ACTIVEX 编程 :在VB中TOOLBAR控件与CImagelist绑定的实现是怎么实现的 高分请教读串口数据问题,很棘手的问题,分不够再开帖给 怎么样操作modem? 大家谁知道哪里有根据DLL文件转换得到lib和头文件的好软件! 请问如何判断一个文件与另一个文件是否相同 请问有没有适合初学者的书 在什么地方可以声明整个工程的全局变量、常量及结构体???
DateFormat::format (const Date* date, const string_t& pattern) const
{
// the length of the format is usually a good guess of the number
// of chars in the result. Might save us a few bytes sometimes
// Add + 10 for cases like mmmm dddd
string_t result;
size_t size = pattern.size ();
result.reserve (size + 10); size_t i = 0;
const TCHAR* pattern_str = pattern.c_str ();
//DateTimeExpr dte (date->local_time ()); // The date object is not a local time //BUGS: cannot calculate the correct time when used local ticks
DateTimeExpr dte (date->time ());
int hour_offset = (int) (TimeZone::current_time_zone ()->utc_offset (date) / ticks_per_hour);
if (hour_offset < 0 && (int)dte.tm_hour < -(hour_offset)) {
dte.tm_mday--;
dte.tm_hour += 24;
}
dte.tm_hour += hour_offset; while (i < size)
{
int tok_len;
TCHAR ch = pattern_str [i];
switch (ch)
{
//
// Time Formats
// case _T('h'):
{
// hour, [1, 12]
tok_len = count_repeat (pattern_str, size, i, ch); unsigned int hr = dte.tm_hour % 12;
if (hr == 0)
hr = 12; result_pad (result, hr,
tok_len == 1 ? false : hr > 9 ? false : true);
break;
} case _T('H'):
{
// hour, [0, 23]
tok_len = count_repeat (pattern_str, size, i, ch);
result_pad (result, dte.tm_hour,
tok_len == 1 ? false : (dte.tm_hour > 9 ? false : true));
break;
}
case _T('m'):
{
// minute, [0, 59]
tok_len = count_repeat (pattern_str, size, i, ch);
result_pad (result, dte.tm_min,
tok_len == 1 ? false : dte.tm_min > 9 ? false : true);
break;
} case _T('s'):
// second [0, 29]
{
tok_len = count_repeat (pattern_str, size, i, ch);
result_pad (result, dte.tm_sec,
tok_len == 1 ? false : dte.tm_sec > 9 ? false : true);
break;
} case _T('p'):
// AM/PM.
{
tok_len = 1;
result.append (SimpleDateFormat::current_time_indicator (dte.tm_hour < 12));
break;
} case _T('z'):
// timezone
case _T('Z'):
{
CFLASSERT (false); // pls impl.
break;
}
//
// Date tokens
//
case _T('d'):
{
// day. d(dd) = day of month
tok_len = count_repeat (pattern_str, size, i, ch);
result_pad (result, dte.tm_mday,
tok_len == 1 ? false : dte.tm_mday > 9 ? false : true);
break;
} case _T('e'):
{
tok_len = 1;
result.append (SimpleDateFormat::current_week_day (dte.tm_wday, true));
break;
} case _T('E'):
{
tok_len = 1;
result.append (SimpleDateFormat::current_week_day (dte.tm_wday, false));
break;
} case _T('w'):
{
tok_len = 1;
result_pad (result, dte.tm_wday, false);
break;
} case _T('W'):
{
CFLASSERT (false); // TODO:
break;
} case _T('M'):
{
/*// Month.m(m?) = month # (with leading 0 if two mm)
// mmm = 3 letter name
// mmmm+ = full name
*/
tok_len = count_repeat (pattern_str, size, i, ch);
int month = dte.tm_mon; if (tok_len == 1)
result_pad (result, month, false);
else if (tok_len == 2)
result_pad (result, month, month > 9 ? false : true);
else if (tok_len == 3)
result.append (SimpleDateFormat::current_month (month, true));
else
result.append (SimpleDateFormat::current_month (month, false));
break;
} case _T('y'):
{
/* Year. y(y?) = two digit year, with leading 0 if yy
yyy+ full year, if yyy and yr < 1000, displayed as three digits*/
tok_len = count_repeat (pattern_str, size, i, ch); int year = tok_len > 2 ? dte.tm_year : dte.tm_year % 100;
if (tok_len == 1)
result_pad (result, year, false);
else if (tok_len == 2)
result_pad (result, year, (year < 10));
else
result_pad (result, year, false);
break;
} case ('g'):
case ('G'):
// Era name
CFLASSERT (false);
break; //
// Other
//
case '\'':
{
// literal
size_t l = i + 1;
while (true)
{
TCHAR c = pattern_str[l++]; if (c == '\'') {
if (pattern_str[l] != '\'') // Peek next to check double ''
break;
else
l++; // skip it
} result.append (1, c);
}
tok_len = (int) (l - i);
break;
}
default:
// catch all unkown token
{
result.append (1, ch);
tok_len = 1;
break;
}
} i += tok_len;
} return result;
}