1

私はおそらく基本的な問題を抱えています。ファイルから配列を読み込もうとしましたが、その後、パスカル言語の標準入力から文字列を読み込もうとしました。エラー メッセージは送信されず、入力文字列が画面に表示されるまで待機しません。私は何をすべきか?

これが私のコードです:

Procedure beolvas(var x:rangsor; var n:byte; fajl:string);
var i:byte;

Begin
  Assign(input,fajl);
  Reset(input);
Readln(n);
for i:=1 to n do begin
   Readln(x[i].diak);
   Readln(x[i].atlag);
end;
close(input)
End;

Procedure beolvasnev(var s:string; x:rangsor; n:byte);
var i:byte;
Begin
Write('Kerem a diak nevet: ');
Readln(s);
End;
4

2 に答える 2

2

Assign(input, '');ファイル変数を使い終わったら (空のファイル名) を試してくださいclose(input)

于 2012-11-16T23:12:52.950 に答える
0

どのファイルから読み取るかをプログラムに指示していません。ファイル名がない場合、プログラムはコンソールから読み取ろうとします。これは、「入力文字列を画面に書き込むまで待機しない」と説明します (「書き込むまで待機する」ではないはずです)。入力文字列"?)。

これが意図的なものかどうかはわかりませんが、ファイルの最初の行は整数値を保持することが期待されています。ファイルから文字列変数を読み取り、ループ カウンターとして使用する前に文字列が数値であるかどうかを確認することをお勧めします。

于 2012-11-21T13:20:02.760 に答える