您当前位置: 首页 » 编码技巧 »

win

分类目录归档: win - 第2页

[chromium]MessageLoopProxyTest单元测试中的一个隐蔽问题

代码如下

  MessageLoop* task_run_on = NULL;
  MessageLoop* task_deleted_on = NULL;
  int task_delete_order = -1;
  MessageLoop* reply_run_on = NULL;
  MessageLoop* reply_deleted_on = NULL;
  int reply_delete_order = -1;

  scoped_refptr task_recoder =
      new LoopRecorder(&task_run_on, &task_deleted_on, &task_delete_order);
  scoped_refptr reply_recoder =
      new LoopRecorder(&reply_run_on, &reply_deleted_on, &reply_delete_order);

  ASSERT_TRUE(task_thread_.message_loop_proxy()->PostTaskAndReply(
      FROM_HERE,
      Bind(&RecordLoop, task_recoder),
      Bind(&RecordLoopAndQuit, reply_recoder)));

  // Die if base::Bind doesn't retain a reference to the recorders.
  task_recoder = NULL;
  reply_recoder = NULL;
  ASSERT_FALSE(task_deleted_on);
  ASSERT_FALSE(reply_deleted_on);

  //--- 这里将是比较关键的一个问题 begin ---
  UnblockTaskThread();
  current_loop_->Run();
  //--- 这里将是比较关键的一个问题 end ---

  EXPECT_EQ(task_thread_.message_loop(), task_run_on);
  EXPECT_EQ(current_loop_.get(), task_deleted_on);
  EXPECT_EQ(current_loop_.get(), reply_run_on);
  EXPECT_EQ(current_loop_.get(), reply_deleted_on);
  EXPECT_LT(task_delete_order, reply_delete_order);

readmore

2013-06-04 | | win, 编码技巧

[chromium]MessageLoopProxyTest单元测试中的一个隐蔽问题已关闭评论

【编码技巧-win】关于字节编码长度在windows里面的处理

win 2k时代开始,微软用的中文系统编码均是unicode,而unicode编码被微软使用固定的2个字节来存放(也许这就是和unicode字符集的编码长度有关)。

因此,在中文windows平台中可以直接等同这么看

unicode便编译的代码,并且和unicode版本的微软库打交道的代码。在判断字符串时是否含有中文时,只要循环遍历字符串中的每一个字节,判断对应的 uint8 是否 大于 0x7F。如果大于,说明有中文一类的,非ascii字符。将对应的字符串buff,转换成wchar即可。否则直接按照char方式来用即可

 

2013-04-08 | | win, 编码技巧

【编码技巧-win】关于字节编码长度在windows里面的处理已关闭评论