Pascal read()可变长度的字符串

Pascal read()可变长度的字符串,pascal,freepascal,Pascal,Freepascal,我有两行值(从控制台输入),看起来如下所示: David 89000 Peter 99500 Jim 23999 END 1 除了在不知道字符串长度时循环读取字符外,还有没有其他方法可以将字符串和数字保存到变量中 str:=''; salary:=0; i:=1; while str<> 'END' do begin str:=''; salary:=0; read(ch); while ch <> ' ' do begi

我有两行值(从控制台输入),看起来如下所示:

David 89000
Peter 99500
Jim 23999
END 1
除了在不知道字符串长度时循环读取字符外,还有没有其他方法可以将字符串和数字保存到变量中

 str:=''; salary:=0; i:=1;
  while str<> 'END' do
  begin
    str:='';  salary:=0;
    read(ch);
    while ch <> ' ' do
      begin
        str:=str+ch;
        read(ch);
      end;
    read(salary);

    array[i].name:=str;
    array[i].salary:=salary;
    i:=i+1;
    readln;
  end;
str:='';工资:=0;i:=1;
而str'END'做什么
开始
str:='';工资:=0;
read(ch);
而你呢
开始
str:=str+ch;
read(ch);
结束;
阅读(工资);
数组[i]。名称:=str;
数组[i]。工资:=工资;
i:=i+1;
readln;
结束;

不具有标准I/O功能。当然,您可以将该代码放在单独的过程中,或使用tstringlist进行拆分。

您可以通过调用
ReadLn
来完成此操作,然后自己解析输入:

var
  TextIn: string;
  Person: string;
  Salary: Integer;
begin
  while true do
  begin
    ReadLn(TextIn);  // Requires user to hit Enter
    if Copy(TextIn, 1, 3) <> 'END' then
    begin
      Person := Copy(TextIn, 1, Pos(' ', TextIn) - 1);
      Salary := StrToInt(Copy(TextIn, Pos(' ', TextIn) + 1, 255);
    end
    else
      Exit;
  end;
end;
var
TextIn:字符串;
人:弦;
工资:整数;
开始
尽管如此
开始
ReadLn(TextIn);//要求用户按Enter键
如果复制(文本输入,1,3)‘结束’,则
开始
人员:=复印件(文本输入,1,位置('',文本输入)-1);
工资:=STROTINT(复印件(文本输入,位置)('',文本输入)+1255);
结束
其他的
出口
结束;
结束;
我没有包括任何错误检查(应该在那里),因为您的原始代码也没有任何错误检查