首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请问个关于registry类的有关问题

2013-03-06 
请教个关于registry类的问题我在编写程序时,觉得直接调用TRegistry要考虑的问题多,自己写了个,请大侠们帮

请教个关于registry类的问题
我在编写程序时,觉得直接调用TRegistry要考虑的问题多,自己写了个,请大侠们帮看下有什么问题,为什么编译时可以通过,但在执行程序时会出错。

#include "registry.hpp"
#include "winreg.h"

//定义注册表信息操作类

class Mreg : public TRegistry
{private:
   TRegistry    *reg;

   //根键默认       HKEY_CURRENT_USER,本工程使用HKEY_LOCAL_MACHINE
   //形如           "\\software\\cf_soft"

   String       current_path;

 public:

   bool set_reg_path(String);
   void         add_reg(String,String);
   String       read_reg(String);
   int          reg_name(void);
   String       reg_name(int);
   bool         exists_key(String);
   bool         delete_key(String);
   void         close(void);
   };

 bool Mreg::set_reg_path(String current_path)
 {
  try{
 Mreg::current_path=current_path;
 reg->RootKey=HKEY_CURRENT_USER;
 reg->CreateKey(current_path);
   return true;
   }
   catch(...)
   {return false;
   }
   }

 void Mreg::add_reg(String sr,String regs)
 {
 reg->WriteBinaryData(sr,regs.c_str(),StrLen(regs.c_str()));
   }

 String Mreg::read_reg(String sr)
  {char regb[255];
  reg->ReadBinaryData(sr,regb,reg->GetDataSize(sr));
   return String(regb);
  }

  bool Mreg::exists_key(String sr)
  {
  if(reg->KeyExists(sr))
   return true;
    else
     return false;
  }

  bool Mreg::delete_key(String sr)
  {
  if(reg->DeleteKey(sr))
  return true;
   else
    return false;
  }

  String Mreg::reg_name(int num)
  {
  TStrings* list=new TStringList();
    reg->GetKeyNames(list);
   return list->Strings[num-1];
 }

  int Mreg::reg_name(void)
  {
 TStrings* list=new TStringList();
    reg->GetKeyNames(list);
  delete list;
   return list->Count;
  }

  void Mreg::close(void)
  {reg->CloseKey();
  }
BCB?registry
[解决办法]
出了什么问题?
[解决办法]
我说的是你Mreg类中的TRegistry对象在哪里初始化的,没有看到相关的代码咯。
建议在Mreg类的构造函数中创建TRegistry对象,然后在Mreg类的析构函数中释放。

热点排行