如何使程序运行使带参数???? 通常情况下DELPI程序编译成一个EXE就可以运行了,可是我想让这个程序运行的时候带上参数,也就是说要在开始菜单里面点击运行,输入文件的路径和参数才可以运行,或者在快捷方式里面设置路径和参数。其实就相当与调用一个带参的函数,请问如何实现?????????????? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本身就是带参数的啊只是自己规定一下有意义的同时程序中有相应代码处理ParamStr(Index: Integer): String 取参数 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);var lphKey: HKEY; fKeyName: string; fKeyValue: string; CfgStrList: TStringList;begin fKeyName := 'OurFile'; fKeyValue := 'MyProject'; RegCreateKey(HKEY_CLASSES_ROOT, Pchar(fKeyName), lphKey); RegSetValue(lphKey, '', REG_SZ, Pchar(fKeyValue), 0); fKeyName := '.wgy'; fKeyValue := 'MyFile'; RegCreateKey(HKEY_CLASSES_ROOT, Pchar(fKeyName), lphKey); RegSetValue(lphKey, '', REG_SZ, Pchar(fKeyValue), 0); fKeyName := 'MyFile'; fKeyValue := '"' + ParamStr(0) + '" "%1"'; RegCreateKey(HKEY_CLASSES_ROOT, Pchar(fKeyName), lphKey); RegSetValue(lphKey, 'shell\open\command', REG_SZ, Pchar(fKeyValue), MAX_PATH); try CfgStrList := TStringList.Create; if Length(Trim(ParamStr(1))) <> 0 then begin CfgStrList.LoadFromFile(ParamStr(1)); if CfgStrList.Count >= 2 then begin Self.Top := StrToInt(CfgStrList[0]); Self.Left := StrToInt(CfgStrList[1]); end; end; finally FreeAndNil(CfgStrList); end;end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);var CfgStrList: TStringList;begin try CfgStrList := TStringList.Create; CfgStrList.Add(IntToStr(Self.Top)); CfgStrList.Add(IntToStr(Self.Left)); if Length(Trim(ParamStr(1))) = 0 then CfgStrList.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Defult.wgy') else CfgStrList.SaveToFile(ParamStr(1)); finally FreeAndNil(CfgStrList); end;end;end.看看这个小测试不过和你的要求不一样 在项目文件里截获程序参数ParamStr(n)截取第N个参数 //ParamStr(0)是指当前应用程序的运行路径,你测试以下就知道了ParamCount()获得参数个数 你为什么不自己做一个输入参数的界面呢,要是想在命令行里使用,就在run->parameters里设置一下,再用paramstr获取。 哪位大哥有用panel做的房态图的DEMO呢? Delphi高手还有价值吗? 窗体在98和2000下大小出现不同,这是为什么?怎么处理 求DES加密方法 如何通过combobox来显示不同表的内容? 送分啦!!! 各位大哥,小弟求救......... 如何制作可自动生成label并可拖动程序 急问题:我在数据库中存入了图像的路径(如:c:\img\1.jpg),请问:能否在DBGrid中显示出该图像?在Report中也能吗? 经delphi6编译过的程序如何回到delphi5? 高手啊,请给一个能捕获ip数据包的程序,不够再加~ FR报表问题,NEWPAGE
只是自己规定一下有意义的
同时程序中有相应代码处理ParamStr(Index: Integer): String 取参数
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
lphKey: HKEY;
fKeyName: string;
fKeyValue: string; CfgStrList: TStringList;
begin
fKeyName := 'OurFile';
fKeyValue := 'MyProject';
RegCreateKey(HKEY_CLASSES_ROOT, Pchar(fKeyName), lphKey);
RegSetValue(lphKey, '', REG_SZ, Pchar(fKeyValue), 0); fKeyName := '.wgy';
fKeyValue := 'MyFile';
RegCreateKey(HKEY_CLASSES_ROOT, Pchar(fKeyName), lphKey);
RegSetValue(lphKey, '', REG_SZ, Pchar(fKeyValue), 0); fKeyName := 'MyFile';
fKeyValue := '"' + ParamStr(0) + '" "%1"';
RegCreateKey(HKEY_CLASSES_ROOT, Pchar(fKeyName), lphKey);
RegSetValue(lphKey, 'shell\open\command', REG_SZ, Pchar(fKeyValue), MAX_PATH); try
CfgStrList := TStringList.Create;
if Length(Trim(ParamStr(1))) <> 0 then
begin
CfgStrList.LoadFromFile(ParamStr(1));
if CfgStrList.Count >= 2 then
begin
Self.Top := StrToInt(CfgStrList[0]);
Self.Left := StrToInt(CfgStrList[1]);
end;
end;
finally
FreeAndNil(CfgStrList);
end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
CfgStrList: TStringList;
begin
try
CfgStrList := TStringList.Create;
CfgStrList.Add(IntToStr(Self.Top));
CfgStrList.Add(IntToStr(Self.Left));
if Length(Trim(ParamStr(1))) = 0 then
CfgStrList.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Defult.wgy')
else
CfgStrList.SaveToFile(ParamStr(1));
finally
FreeAndNil(CfgStrList);
end;
end;end.看看这个小测试
不过和你的要求不一样
ParamCount()获得参数个数
要是想在命令行里使用,就在run->parameters里设置一下,再用paramstr获取。