如何才能知道程序被调用时一共传了多少个参数。
比如, show 1.txt
       show 1.txt /b另外,我用Inno打包我的程序,但是它创建的快捷方式运行我的程序时,获取的程序所在路径不正确。
我的程序是这样得到自己运行的路径的,
sExePath := ExtractFilePath(Application.ExeName);

解决方案 »

  1.   

    1、function ParamCount: Integer;
       --Returns the number of parameters passed on the command line.
    2、没用过Inno,不过ExtractFilePath(Application.ExeName)是没错的
      

  2.   

    有关 Delphi 传入应用程式的命令列参数, 请参考以下的说明:用ParamCount函数取得命令参数的个数: 
    呼叫 ParamStr(0), 传回执行档的档名(含路径)
    呼叫 ParamStr(n), 传回第n个参数的内容
    procedure TForm1.FormCreate(Sender: TObject);
    var
      sFileName: string;
    begin
      if ParamCount > 0 then  //(* 有执行参数传入 *)
      begin
        sFileName := ParamStr(1); //(* 取得参数内容 *)
        if FileExists(sFileName) then
          Memo1.Lines.LoadFromFile(sFileName)
        else
          Application.MessageBox('找不到指定的档案', '讯息', 48);
      end;
    end;至于打包程序安装后快捷方式获得路径不正确的问题,我想可能是你在打包的时候设置有问题,应该是跟你的程序无关吧。
      

  3.   

    如果你的路径名中包含有空格,ExtractFilePath(Application.ExeName)可能会出问题!比如你的程序在我的文档的某个文件夹里。因为DELPHI是以空格来分割参数的。
      

  4.   

    1, 这个问题1楼的兄弟说的清楚极了
    2,你说的INNO创建的快捷方式运行你的程序不能找到路径;如果是快捷方式不能找到你的程序,那可能是你inno设置的时候出了问题,如果是程序可以运行,只是在运行过程中需要获得路径的操作返回的结果不正确,那可能就是程序的问题了。你最好把操作出错的地方在原始程序中重新检查一下,比如说用Message查看一下,在重新打包,看看结果是什么?这样就好解决你的问题了阿