请教个关于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类的析构函数中释放。