8月

2005.8.10

今天简单的执行了程序.(RRAS下的NAT的静态端口路由功能)

学习心得如下:

1.

在头文件中定义了class CRegOperation :public CRegKey的时候,在cpp文件中可以直接用CRegKey的函数,最好不要再CRegKey rk;这样,通过rk来调用CRegKey的函数.(如果在一个程序中两者兼用会使结果不正确!);

2.

数字本来在计算机中就是16进制表示的

显示的十进制倒是经过转换的

在注册表中也是二进制的

只是注册表编译器显示时转成 16 进制了

之后,当用CRegKey中的SetBinaryValue传到注册表后,可以直接注册表显示中以16进制显示.(而实际在内存中是以2进制存入的)

3.

自己写的10进制转换为16进制显示的函数

WORD ChangeToHex_1( ULONG ulData )
{
 
 ULONG rgux[4] = { 0,0,0,0};
 ULONG rguy[4] = { 0,0,0,0};
 CString rgs[4];
 CString m_s;
 rgux[3] = ulData / 16;
 rguy[3] = ulData % 16;
 ULONG m_ulm;
 WORD m_bValue;

 int i;
 for( i = 3; i ; i-- )
 {
  rgux[i-1] = rgux[i] / 16;
  rguy[i-1] = rgux[i] % 16;
  if( rguy[i] == 10 )
  {
   rguy[i] = 0xa;
   rgs[i].Format( "%x", rguy[i] );
  }
  else if( rguy[i] == 11 )
  {
   rguy[i] = 0xb;
   rgs[i].Format( "%x", rguy[i] );
  }
  else if( rguy[i] == 12 )
  {
   rguy[i] = 0xc;
   rgs[i].Format( "%x", rguy[i] );
  }
  else if( rguy[i] == 13 )
  {
   rguy[i] = 0xd;
   rgs[i].Format( "%x", rguy[i] );
  }
  else if( rguy[i] == 14 )
  {
   rguy[i] = 0xe;
   rgs[i].Format( "%x", rguy[i] );
  }
  else if( rguy[i] == 15 )
  {
   rguy[i] = 0xf;
   rgs[i].Format( "%x", rguy[i] );
  }
  else
  {
   rgs[i].Format( "%x",rguy[i] );
  }
  
  
  if( rguy[i-1] == 10 )
  {
   rguy[i-1] = 0xa;
   rgs[i-1].Format( "%x", rguy[i-1] );
  }
  else if( rguy[i-1] == 11 )
  {
   rguy[i-1] = 0xb;
   rgs[i-1].Format( "%x", rguy[i-1] );
  }
  else if( rguy[i-1] == 12 )
  {
   rguy[i-1] = 0xc;
   rgs[i-1].Format( "%x", rguy[i-1] );
  }
  else if( rguy[i-1] == 13 )
  {
   rguy[i-1] = 0xd;
   rgs[i-1].Format( "%x", rguy[i-1] );
  }
  else if( rguy[i-1] == 14 )
  {
   rguy[i-1] = 0xe;
   rgs[i-1].Format( "%x", rguy[i-1] );
  }
  else if( rguy[i-1] == 15 )
  {
   rguy[i-1] = 0xf;
   rgs[i-1].Format( "%x", rguy[i-1] );
  }
  else
  {
   rgs[i-1].Format( "%x",rguy[i-1] );
  }
 }
  
 for( i = 0; i < 4; i++ )
 {
  m_s += rgs[i];
 }
 m_ulm = strtoul ( m_s, 0, 16 );
 m_bValue = WORD ( m_ulm );
 
 return m_bValue; 
}

4.

用Debug通过看内存来调试,(DLL需要建立一个EXE来连接它,再来用这种方法调试)

如:///CRegOperation为DLL中的类, RegEdit为引出的函数,给这个函数前面加上断点,然后点调试按钮,会到调试界面.然后再点调试按钮会继续往下执行(开始执行DLL中的这个函数).此时屏幕左下角是此时各变量的值,左中是各个程序,左上是内存显示.可以把想要查的变量或结构空间拖拽显示到内存的上边的小长条中,这时内存就会显示到这个变量的位置

以下是exe中的一段代码:

CRegOperation ro;
 r = ro.RegEdit( uServerType, ulInputPort, ulOutputPort, uIpAddress, a );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值