命令行参数的帕斯卡

问题描述 投票:1回答:2

您好我是新帕斯卡我有一个计划,使结果....我需要通过命令行输入在给定的变量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
command-line-arguments pascal delphi
2个回答
2
投票

由于对方回答说,你用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...

1
投票

你需要了解一个字符串和一个整数之间的区别。

为了速滑运动员的肌肉如123整数和字符的字符串转换1 2 3你需要使用的功能。 strtoint是一种这样的功能,将字符串转换为一个整数。 inttostr是另一个,从一个整数转换为字符串。

命令行的数据经由ParamStr这(n)作为一个字符串提供。

intvar := strtoint(paramstr(n));

将字符串到整数变量intvar的值。

writeln有设施,以一个整数参数转换为格式化字符串,你的方式使用它正试图输出字符串,所以你需要整数output转换为字符串。

writeln(' output : ', inttostr(output) );

应该做的非常漂亮。


var
  x : string;
  pcnt : integer;

begin
  writeln('Parameter count=',inttostr(paramcount));
  for pcnt := 1 to paramcount do
    writeln('Parameter ',pcnt, ' of ',paramcount,' = ',paramstr(pcnt));
  readln(x);
end.

应显示参数列表。

事实上,这是该过程writeln将认识到变量类型,并采取措施以适当地格式化该值作为字符串,正如傲慢地被指出的情况。

我的问题是一个字符串和一个整数之间的区别。 paramstr返回其必须被转换为一个整数的字符串。经过帕斯卡尔超过四十年的经验,这是我认为这是更好地为初学者去通过各种方式转换的锻炼,然后在writeln使用转换设备内置。

第一次散步,然后运行。你首先需要了解的过程中的步骤。然后你就可以开始使用快捷键 - 一旦你掌握了基本知识。

© www.soinside.com 2019 - 2024. All rights reserved.