嗨,我是帕斯卡新手,我有一个程序可以给出结果....
我需要在给定变量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
最佳答案
就像另一个答案所说的那样,您使用ParamCount
和ParamStr
访问命令行参数。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...