0

次のような2つの値(コンソールからの入力)の行があります。

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;
4

2 に答える 2

2

を1回呼び出すだけでそれを実行し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;

元のコードにもエラーチェックがないため、エラーチェック(そこにあるはずです)は含めませんでした。

于 2012-11-25T21:05:30.883 に答える
0

標準のI/O機能ではありません。もちろん、そのコードを別のプロシージャに配置することも、tstringlistで分割することもできます。

于 2012-11-25T20:22:42.673 に答える