使用getopt()来解析C/C++中的命令行参数并不容易.
Delphi有什么类似的东西吗?或者理想情况下,使用相同的语法?我知道Delphi支持FindCmdLineswitch和Paramstr(),但是还需要一些额外的解析.
我想要一些类似于getopt()在C中的东西.容易允许基本的切换开关,以及在切换后捕获值.看下面的一些例子C代码,看看我在说什么:
void print_help()
{
printf("usage:\n") ;
printf("\t\t-i set input file\n") ;
printf("\t\t-o set output file\n") ;
printf("\t\t-c set config file\n") ;
printf("\t\t-h print this help information\n") ;
printf("\t\t-v print version\n") ;
}
char* input_file = NULL ;
char *query=NULL;
char opt_char=0;
while ((opt_char = getopt(argc,argv,"i:q:vh")) != -1)
{
switch(opt_char)
{
case 'h':
print_help();
exit(-1);
break;
case 'v':
print_version() ;
exit(-1) ;
break ;
case 'i':
input_file= optarg ;
break ;
case 'q':
query= optarg ;
break ;
default:
print_help();
exit(-1);
break;
}
}
解决方法
有一个实现TGetopt,声称
implement a getopt variant for Delphi. It is nearly POSIX compatible,supporting long options,required,optional and no arguments
你可以找到它here.