|
 
- 帖子
- 1972
- 精华
- 0
- IT金币
- 1
- 在线时间
- 0 小时
- 注册时间
- 2007-8-7
- 最后登录
- 2009-11-19
|
1楼
发表于 2007-2-23 18:09
| 只看该作者
在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…中修改命令行参数,然后运行程序……怎么样?够简单的吧!
复制代码 |
|