通常情况下DELPI程序编译成一个EXE就可以运行了,可是我想让这个程序运行的时候带上参数,也就是说要在开始菜单里面点击运行,输入文件的路径和参数才可以运行,或者在快捷方式里面设置路径和参数。其实就相当与调用一个带参的函数,请问如何实现??????????????

解决方案 »

  1.   

    本身就是带参数的啊
    只是自己规定一下有意义的
    同时程序中有相应代码处理ParamStr(Index: Integer): String 取参数
      

  2.   

    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.看看这个小测试
    不过和你的要求不一样
      

  3.   

    在项目文件里截获程序参数ParamStr(n)截取第N个参数  //ParamStr(0)是指当前应用程序的运行路径,你测试以下就知道了
    ParamCount()获得参数个数
      

  4.   

    你为什么不自己做一个输入参数的界面呢,
    要是想在命令行里使用,就在run->parameters里设置一下,再用paramstr获取。