2015-04-18 2 views
-2

У меня есть программа, чтобы прочитать список конкурентов их оценки из текстового файла:Invalid цифровая ошибка ввода в Дельфах

var 
    competition : TextFile; 
    number : byte; 
    name : array of string; 
    score : array of array of byte; 
    j : byte; 
    i : byte; 

begin 
    AssignFile(competition, 'korcule.txt'); 
    Reset(competition); 
    ReadLn(competition, number); 
    SetLength(name, number); 
    SetLength(score, number, 4); 
    for i := 0 to number - 1 do begin 
    ReadLn(competition, name[i]); 
    j := 0; 
    While not EoLn(competition) do begin 
     Read(competition, score[i, j]); 
     inc(j); 
    end; 
    end; 
    ReadLn; 
    CloseFile(competition); 
end. 

Первая строка текстового файла количество конкурентов, то имя и после названия являются десятки фактических людей.

5 
John Smith 
1 8 4 6 
Marc Zuckerberg 
4 6 7 1 
Bill Gates 
3 8 4 1 
Johnny Rapid 
9 9 2 7 
Phillip Lauren 
4 7 3 1 

мне нужно прочитать оценки индивидуально в многомерный массив, как этот MyArray [1] = 1, MyArray [2] = 8 и так далее. Проблема в том, что мой код всегда дает мне ошибку «недопустимый числовой ввод». В чем проблема ??

+0

* недопустимый числовой ввод –

+4

Почему вы все еще используете устаревший ввод-вывод? Лично я читал его по строкам, а затем разделил строку на несколько значений. Почему вы задаете вопросы и не принимаете ответы? –

+0

Единственная причина, по которой эти инструменты ввода-вывода все еще существуют в Delphi, - это обратная совместимость с очень старыми версиями Delphi. –

ответ

1

Вам не хватает readln после цикла while.

В конце цикла while вы достигли конца строки, но вы еще не перешли к следующей строке.

Кроме того, ваш окончательный readln читает с stdin, а не из текстового файла.

+0

Итак, просто переместите свое окончательное утверждение readln в одну строку вверх. –