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

逻辑关系Dll,不知道如何写合适了,请问

2012-08-03 
逻辑关系Dll,不知道怎么写合适了,请教注册模块写错一个DLL了,如果注册KEY为空,启动注册模块,现在是如果注

逻辑关系Dll,不知道怎么写合适了,请教
注册模块写错一个DLL了,如果注册KEY为空,启动注册模块,
现在是如果注册KEY正确能够正常允许,如果KEY位数不对或是KEY不对,应该是返回界面继续注册不能进入系统界面,我写的逻辑不是很对,达不到此效果。贴出我的代码大家帮忙看下。
注册入口函数

C/C++ code
        if(regKey=="")        {            bResult=false;        }    if (!bResult)    {        bResult = f->ShowModal() == mrOk;        if(!f->bResult)        //这点我是想判断KEY不对给一个变量,为假在弹出注册窗体,但是这点2次注册后就进入窗体了,没想起来怎么写合适,如果不加这个判断,KEY不对,程序执行到delete f;就进入窗体了,该怎么写合适        {          f->ShowModal()==mrOk;          return 0;        }        else        {          delete f;        }    }    return bResult;

注册窗体,列出位数不对的代码
C/C++ code
 if((editNum->Text.Length()+editNum2->Text.Length()+editNum3->Text.Length()+editNum4->Text.Length())<20)  {   MessageBox(Handle,"注册号位数不正确!","注册失败!",0);   bResult=false;   return;   }


[解决办法]
你应该找为什么点两次就认为注册了的判断,应该是判断注册是否成功才对。还有你的这里
C/C++ code
f->ShowModal()==mrOk;return 0;
[解决办法]
ShowModal() 返回的是是否按了窗口的确定按钮
[解决办法]
不知道你的注册窗体里面怎么处理的,改成这样试试.
C/C++ code
if (!bResult)//如果没有注册    {       if( f->ShowModal() == mrOk)//这里判断窗体是不是单击了确定按钮         {          //单击了确定改怎么处理,要看你这个注册窗体里面是不是返回mrOk就代表注册成功了       bResult = true;        }        delete f;    }    return bResult;
[解决办法]
不要把简单的事情复杂化。首先你需要做一个验证注册码的函数,具体的算法不管,假设其原型如下:
bool __fastcall IsValidRegCode(String strRegCode)
{
...
}

用户输入的注册码,如果注册成功,需要存储注册码或者注册成功的状态,可以存到注册表,也可以存到某个文件中,程序启动的时候,先读取注册码或注册的状态,假设有个函数:
String __fastcall LoadRegCode()
{
...
}

然后调用IsValidRegCode函数,判断注册码是否有效,如果无效,弹出注册窗口,假设注册窗口上有个文本框,供输入注册码使用,名字为edtRegCode,那么:
TfrmSoftRegist *f = new TfrmSoftRegist(NULL);
f->ShowModal();
String strRegCode = f->edtRegCode->Text;
delete f;

bool bResult = IsValidRegCode(strRegCode);

这里得到的bResult 的值,就是注册成功与否的标志了,如果成功,把注册码存储到某个文件,就行了。

流程给你讲清楚,自己看着写函数就行了。

热点排行