上篇
上次回顾
上次我们讲到怎么样检查输入的命令为/?
,当输入/?
之后,程序将显示帮助信息
。
内容预览
本节概要
本节课讲一下,怎么样检测输入的命令为/Log
的设置命令。其中包括怎么样设置log文件日志
。
在CheckComandLine
函数中添加下面代码
// 2. find LOG command.
for (int i=1; i< argc; i++)
{
CString csArgv = CString(argv[i]).MakeUpper();
if (csArgv.Find(COMMAND_LOG) == 0) // find /LOG: command
{
CString csFullPath = CString(argv[i]).Mid(COMMAND_LOG.GetLength());
cmdLineInfo.OptionLogFile = csFullPath;
}
}// end of for
上面的代码中,是遍历所有的参数,直到找到COMMAND_LOG
这个变量的内容,我们在wordsum.h
头文件中添加对应的变量
const CString COMMAND_LOG = _T("/LOG:");
这样我们就得到了输入的/LOG:
的参数了。
/LOG:的参数检查
从帮助信息/?
中我们可以得到/LOG:
后面是跟一个文件路径,这里需要做一下文件路径的检查。
重复输入检查
首先要检查的是/LOG:
命令不能被重复的输入。这里可以用cmdLineInfo.OptionLogFile
的内容来判断,是否有被重复输入的/LOG:
参数。
if ( !cmdLineInfo.OptionLogFile.IsEmpty() )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_007,COMMAND_LOG);
return WORDSUM_RESULT_ERROR;
}
这里用到了一个WORDSUM_MSG_ERR_007
资源,我们在资源中添加相应的字符串。
WORDSUM_MSG_ERR_007 "参数 %s 被重复定义。"
调试预览
空参数检查
在输入/LOG:
中是不允许输入的内容为空
的,所以这里也需要检查一下。
if ( csFullPath.IsEmpty() )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_003);
return WORDSUM_RESULT_ERROR;
}
调试预览
判断输入的文件路径为文件夹
当/LOG:
参数所代的参数文件为一个文件夹
的情况下,这种情况是不被允许的。
// 获得程序的完整路径
csFullPath = GetAbsolutePath(csFullPath);
// 检查文件的属性是否为文件夹
if ( PathIsDirectory(csFullPath) )
{
g_Log.WriteLine(Log::LOG_ERROR,WORDSUM_MSG_ERR_013);
return WORDSUM_RESULT_ERROR;
}
在上面的代码中使用到了GetAbsolutePath
函数,它的内容为如下:
/*************************************************************************/
/* 获得一个文件的绝对路径 */
/* [处理概要] */
/* 获得一个文件的绝对路径 */
/* [参数] */
/* LPCTSTR lszFilePath [I] 一个文件的路径 */
/* [返回值] */
/* 这个文件对应的绝对路径 */
/* [备注说明] */
/* */
/*************************************************************************/
__inline CString GetAbsolutePath(LPCTSTR lszFilePath)
{
char szTemp[MAX_PATH] = {0};
char** lppPart={NULL};
GetFullPathName(lszFilePath,MAX_PATH,szTemp,lppPart) ;
return szTemp;
}
并在wordsum.h
添加对应的声明
__inline CString GetAbsolutePath(LPCTSTR lszFilePath);
PathIsDirectory
这两个函数。它在shlwapi.h
头文件中被声明,我们只要wordsum.h
头文件中添加shlwapi.h
包含就可以使用
#include <shlwapi.h>
并添加WORDSUM_MSG_ERR_013
资源,说明不能输入文件。
WORDSUM_MSG_ERR_013 "LOG文件不能指定为文件夹。"
调试预览
工程下载
结尾
考虑博客的长度,所以分开写。请看下篇