Sollyu

  • 捐赠
  • 关于
  1. 首页
  2. 原创文章
  3. 正文

【第九课】CheckComandLine之/I命令检测

2014年6月12日 3872点热度 0人点赞 1条评论

上篇

上篇地址:【第八课】CheckComandLine之/Log 命令检查【二】

上次回顾

上次我们讲到怎么样检查/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);
}

是用类似的代码完成对另一个参数的检查,由于博客长度我这里就不写出来了,大家可以自由拓展一下。

工程下载

下载地址:点击下载

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: CheckComandLine log VC++ word-sum 教程
最后更新:2014年6月12日

sollyu

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2021 sollyu.com. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

苏ICP备15007531号