在C++ Builder中取得命令行参数

用过C语言编程的人都知道,在DOS下的编程可以通过main函数的参数取得命令行参数的个数以及每个参数的字符串,例如

int main(int argv ,char *argv[])
{

}

则命令行参数是argc个,这些参数分别存储在argv[0]~argv[argc-1]中,其中argv[0]是可执行文件的名字(含路径),那么Windows程序是怎么取得命令行参数的呢?用C语言写过windows程序的人都知道,在windows程序的主函数WinMain()中,有一个参数lpszCmd,这个参数就是命令行参数。但我们在windows编程时一般都没在WinMain()函数工作,再加上lpszCmd是整个命令行,要取得每个参数使用也不方便,有没有更好的方法呢?

如果你是使用的C++Builder编程,那么我就恭喜你,在C++Builder中用使用命令行参数是非常简单。C++Builder定义了三个全局变量和函数CmdLine、ParamStr()、ParamCount(),有了这三个变量和函数,就可以非常方便地使用命令行参数了,首先我们来看一下这几个函数和变量的定义:

extern PACKAGE char *CmdLine;
extern PACKAGE AnsiString __fastcall ParamStr(int Index);
extern PACKAGE int __fastcall ParamCount(void);

CmdLine和WinMain()的参数lpszCmd是一样的,也就是整个命令行参数;ParamCount()用来取得命令行参数的个数,但不包括可执行文件名,也就是相当于DOS下的argc-1,ParamSter()用来取得每一个命令行参数的值,ParamStr(0)就是可执行文件名,实际的参数就是ParamStr(1)~ParamStr(ParamCount())。下面就以一个例子来说明这三个函数变量的使用。

在窗体上放置一个Label,用来显示总的命令行参数;再加入一个ListBox,用来显示每个参数,然后在窗体的onCreate事件中加入以下代码:

Label1->Caption=CmdLine;
for(int i=0;i<=ParamCount();i++)
  ListBox1->Items->Add(ParamStr(i));

然后在菜单Run->Parameters…中修改命令行参数,然后运行程序……怎么样?够简单的吧!

时间: 2024-09-15 23:17:03

在C++ Builder中取得命令行参数的相关文章

c语言-C语言中的命令行参数有什么作用?

问题描述 C语言中的命令行参数有什么作用? 最近再学习C语言,在学习到命令行参数的问题的时候搞清楚了命令行参数的用法以及怎么实现的,但是目前无法理解命令行参数到底在实际编程当中的作用是是什么? 希望得到好心人的帮助,谢谢. 解决方案 你可以做一个实验.按键盘上ctrl右边的windows键,不松手,再按下r,打开运行对话框. 输入如下命令 explorer 运行,你会打开一个我的电脑的窗口,默认显示的是你的文档或者当前目录. 关闭,再输入 explorer c: 这次打开我的电脑,并且默认显示的

【原创】memcached 中的命令行参数解析

     本文主要是以 memcached 源码为例,讲解如何在 linux 下解析命令行参数.  安装 memcached 后,查看其可用选项:  ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 [root@Be

C/C++中命令行参数的原理

很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:\1.txt d:\ 在c/c++中,命令行参数的传递是利用main进行形参传递实现的 前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈空间内的只是隐藏了起来. 为了实现命令行参数我们将使用main(int argc,char* argv[])这样的形式

C语言程序设计之命令行参数

  在许多应用软件运行时都带有命令行参数,其实这些命令行参数在C语言编写的程序中也可以实现,灵活地运用命令行参数进行处理可以有效地提高程序的运行效率,收到事半功倍的效果. C语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推.如下例输出命

cmd-java中调用命令行,可执行文件带有参数如何设置?

问题描述 java中调用命令行,可执行文件带有参数如何设置? 我在使用哈工大分词LTP二进制版本 命令如下 ltp_test --input C:UsersadminDesktoptest2.txt --segmentor-lexicon C:UsersadminDesktopdict.txt>C:UsersadminDesktopcs4.xml 就算直接调用ltp_test 也现实系统找不到指定的文件 我应该才能正常的调用呢? package demo; import java.io.Buff

shell命令行参数-Linuxshell脚本中调用可执行程序命令行参数出现丢失错误

问题描述 Linuxshell脚本中调用可执行程序命令行参数出现丢失错误 #!/bin/bash If [$1 == "-i"] then TM_demo $1 $2 fi If [$1 == "-f"] then TM_demo $1 $2 $3 $4 fi 在linux执行的时候./a.sh -f data,出现 [:丢失了"]",大神帮帮忙! 解决方案 [和]不是shell的meta character,所以需要跟其它标识符用blank/s

3.QT中QCommandLineParser和QCommandLineOption解析命令行参数

 1  新建项目 main.cpp #include <QCoreApplication> #include <QCommandLineParser> #include <QDebug> #include <stdio.h>   int main(int argc, char** argv) {     QCoreApplication app(argc, argv);       app.setApplicationVersion("1.0.

在Perl中使用Getopt::Long模块来接收用户命令行参数_应用技巧

我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数有二种形式. •长参数  –help•短参数   -h也就是-和–的分别.–表示完整参数.-表示简化参数.在 Perl 的这个模块中也支持这二种方法.这要介绍的二 Getopt 其实有二个模块,一个叫 Getopt::Long 一个叫 Getopt::Std.下面就只介绍 Getopt::Long

linux中给 alias 添加命令行参数

定义 alias 时,有用命令行参数的需求.但通过查证文档的结果是,alias 根本就不支持传递命令行参数.不过,我们可以变通的解决这个问题,即定义函数.  代码如下 复制代码 alias test='test() { echo $1; };test' [hadoop@NN069186 dev]$ source ~/.bashrc [hadoop@NN069186 dev]$ test abc def gh abc def [hadoop@NN069186 dev]$ 下例截取自我为方便使用 O