上篇
上次回顾
上次我们讲到怎么样检查/log:
文件后缀名
的检查和/log:
主上一级目录必须为目录的检查。
本节概要
本节课主要将输入文件和输出文件的检测,也就是参数/I
还和/L
的检测。
正文
首先在头文件中添加对应的变量。
const CString COMMAND_L = _T("/L:");
const CString COMMAND_I = _T("/I:");
添加如下代码:
// find other command. eg. /L /I
for(int i=1; i<argc; i++)
{
CString csArgv = CString(argv[i]).MakeUpper();
// find /L argument
if (csArgv.Find(COMMAND_L) == 0)
{
}
// find /I argument
else if (csArgv.Find(COMMAND_I) == 0)
{
}
else if (csArgv.Find(COMMAND_LOG) == 0)
{
}
// Extra parameter information
else
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_003);
return WORDSUM_RESULT_ERROR;
}
}
在上面的代码中有对参数/I
和参数/L
的检测。最后一个else
是对非法指令的检测。
使用下面代码来获得参数/I
的输入。
// find /L argument
if (csArgv.Find(COMMAND_L) == 0)
{
// 判断参数是否被重复的赋值,如果被重复赋值就说明参数重复输入,这是不允许的
if( !cmdLineInfo.OptionListFile.IsEmpty() )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_007,COMMAND_L);
return WORDSUM_RESULT_ERROR;
}
// 获得输入 /L 参数的路径。
CString csCommand_L = CString(argv[i]).Mid(COMMAND_L.GetLength());
//这个参数不能为空,如果空的话就是错误的。
if ( csCommand_L.IsEmpty() )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_003);
return WORDSUM_RESULT_ERROR;
}
cmdLineInfo.OptionListFile = GetAbsolutePath(csCommand_L);
}
是用类似的代码完成对另一个参数的检查,由于博客长度我这里就不写出来了,大家可以自由拓展一下。