嗨,我是pascal的新手我有一个给出结果的程序.... 我需要在给定的变量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
答案 0 :(得分:2)
正如另一个答案所说,您使用ParamCount
和ParamStr
来访问命令行参数。
ParamCount
返回在命令行上传递的参数数量,因此您应首先检查它以查看您是否收到了足够的信息。
ParamStr
允许您访问传递的每个参数。 ParamStr(0)
总是为您提供执行程序的全名(包括路径)。使用传递它们的顺序检索其他参数,ParamStr(1)
是第一个,ParamStr(ParamCount)
是最后一个。使用ParamStr
接收的每个值都是字符串值,因此必须先将其转换为适当的类型才能使用它。
这是一个工作示例(非常简单,并且省略了所有错误检查 - 例如,您应该使用StrToInt
来保护代码,以便在提供的内容不会转换为整数时处理错误。 / p>
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 :(得分: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
返回一个必须转换为整数的字符串。在Pascal工作了四十多年之后,我认为初学者最好先进行转换,然后使用writeln
内置的转换工具。
先走,然后跑。您首先需要了解该过程中的步骤。然后,您可以开始使用快捷方式 - 一旦掌握了基础知识。