嗨,我是帕斯卡新手,我有一个程序可以给出结果....
我需要在给定变量ip1和ip2中传递命令行输入。
它可以通过ParamStr [1]实现,但无法正常工作,请帮助我。
提前致谢!!!!!

  program main;
      var
        output : integer;
      var
        ip1 : integer;
      var
        ip2 : integer;

    function add(input1,input2:integer) : integer;
       var
       result: integer;
    begin
       if (input1 > input2) then
          result := input1
       else
          result := input2;
       add := result;
    end;

    begin
      ip1 := 2533;**{ command line input}**
      ip2 := 555;**{ command line input}**

      output := add(ip1,ip2);
      writeln( ' output : ', output );
    end.K

最佳答案

就像另一个答案所说的那样,您使用ParamCountParamStr访问命令行参数。

ParamCount返回在命令行上传递的参数数量,因此您应该首先检查它是否已收到足够的信息。

ParamStr允许您访问传递的每个参数。 ParamStr(0)始终为您提供执行程序的全名(包括路径)。使用传递的其他顺序来检索其他参数,其中ParamStr(1)是第一个,而ParamStr(ParamCount)是最后一个。使用ParamStr接收的每个值都是字符串值,因此在使用前必须将其转换为适当的类型。

这是一个有效的示例(非常简单,并且省略了所有错误检查-例如,如果提供的内容无法转换为整数,则应使用StrToInt保护代码以处理错误)。

program TestParams;

uses
  SysUtils;

var
  Input1, Input2, Output: Integer;

begin
  if ParamCount > 1 then
  begin
    Input1 := StrToInt(ParamStr(1));
    Input2 := StrToInt(ParamStr(2));
    Output := Input1 + Input2;
    WriteLn(Format('%d + %d = %d', [Input1, Input2, Output]));
  end
  else
  begin
    WriteLn('Syntax: ', ParamStr(0));  { Just to demonstrate ParamStr(0) }
    WriteLn('There are two parameters required. You provided ', ParamCount);
  end;
  WriteLn('Press ENTER to exit...');
  ReadLn;
end.


不带参数(或只有一个)的调用将显示以下内容:

C:\Temp>TestParams
Syntax: C:\Temp\TestParams.exe
There are two parameters required. You provided 0
Press ENTER to exit...

C:\Temp>TestParams 2
Syntax: C:\Temp>TestParams.exe 2
There are two parameters required. You provided 1
Press ENTER to exit...


用两个参数显示调用它

C:\Temp\TestParams 2 2
2 + 2 = 4
Press ENTER to exit...

08-07 01:13