分隔字符串中的数字。帕斯卡尔

时间:2017-02-18 16:30:06

标签: pascal lazarus

我有问题。我学习Pascal只用了几个星期而且我不太了解。我必须编写一个程序,必须计算3个输入数字中的某些内容。问题是它们中的所有3个都需要在一个编辑中输入,其间有空格。所以基本上我有一个字符串'号码号码'。如何将这些数字分成3个单独的字符串,以便将它们转换为整数。

2 个答案:

答案 0 :(得分:1)

在pascal中有内置过程从控制台检索输入。

获取数字输入的最简单方法是使用Read()/ReadLn(),它也可以从字符串转换为数值:

procedure GetNumbers(var x,y,z: Integer); 
begin 
  WriteLn('Enter three numbers separated with space and then press enter.');
  ReadLn(x,y,z); 
end;

这里,ReadLn()检测到三个以空格分隔的输入,等待 [Enter] 键并将整数值分配给x,y,z变量。

答案 1 :(得分:0)

使用复制功能是一种方法。很抱歉格式化,我无法理解如何在这些答案部分正确粘贴代码段。

function TMyForm.Add( anEdit : TEdit ) : integer;
var
    Idx : integer;
    TempString : string;

function GetNext : integer;
begin
    result := result + StrToInt( copy( TempString, 1, Idx - 1 ) );
    TempString := copy( TempString, Idx + 1, MAXINT );
end;

begin
    result := 0;
    TempString := anEdit.Text;

    repeat
        Idx := pos( ' ', TempString );
        if Idx > 0 then
        result := GetNext;
    until Idx = 0;

    if trim( TempString ) <> '' then
        //this is the last piece of it then
        result := result + StrToInt( trim( TempString ) );
end;

您还需要注意输入的值是数字而不是字母,通常使用try..except块完成。