|
Вопрос # 5 399/ вопрос решён / |
|
Здравствуйте, эксперты!
Подскажите пожалуйста почему может выскакивать ошибка read beyond end of file. (останавливается работа программы на третьей строке с низу).
Приложение: Переключить в обычный режим- AssignFile(stat,'statistika.txt');
-
-
- reset(stat);
- qw:=2;
- if FileSize(stat)<> 0 then
- while (not eof(stat)) or (qw<>101) do
- begin
- seek(stat,qw+1);
- read(stat,stmas[qw]);
- qw:=qw+1;
- end;
 |
Вопрос задала: MerryJane (статус: Посетитель)
Вопрос отправлен: 11 июня 2011, 18:55
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Gooddy
Здравствуйте, MerryJane!
Ошибка у вас в том что вы проверяете на eof, а затем переходите на следующую запись!
...while (not eof(stat)) or (qw<>101) do //Тут у нас eof нету!
... begin
... seek(stat,qw+1); //А теперь передвинулись и вышли за пределы файла!
... read(stat,stmas[qw]); //А тут пытаемся прочитать за концом света =)
... qw:=qw+1; //И ещё счётчик увеличиваем!
... end;
Приложение: Переключить в обычный режим- if FileSize(stat)<> 0 then
- begin
- seek(stat,qw);
- while (not eof(stat)) or (qw<>101) do
- begin
- read(stat,stmas[qw]);
- qw:=qw+1;
- seek(stat,qw);
- end;
- end
 |
Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 12 июня 2011, 06:57
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 8; последнее сообщение — 12 июня 2011, 23:07; участников в обсуждении: 4.
|
bugmenot (статус: 3-ий класс), 11 июня 2011, 19:34 [#1]:
Файл такой. Очевидно, что в файле 'statistika.txt' нет сотни записей.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
MerryJane (статус: Посетитель), 11 июня 2011, 20:05 [#2]:
так поэтому ограничение одно из not eof(stat)
|
|
bugmenot (статус: 3-ий класс), 11 июня 2011, 20:37 [#3]:
Цитата (MerryJane):
так поэтому ограничение одно из not eof(stat)
только потом идет Seek "вперед" и наступает полный Eof уже без проверки.
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
Gooddy (статус: 3-ий класс), 12 июня 2011, 07:00 [#4]:
Кстати, почему у вас там стоит qw<>101?
Вы не хотите считывать 101-ую запись?
Тогда нужно ставить не or а and.
А то сейчас прога завалится на 101 записи.
Чисти код! Чисти код! Чисти код!
|
|
Haenta (статус: Посетитель), 12 июня 2011, 12:35 [#5]:
Добрый день, у моей одногруппницы - MerryJane - проблемы с интернетом и она не может зайти на сайт =-(
Она просила передать спасибо за ответ (уверена, что как только у неё наладится интернет, она его оценит)
Сообщение MerryJane:
"or (qw=100) do исправила вот это и теперь выскакивает ошибка
progect1.exe faulted with message : access violation at 0x00030e78.
а за ней загружается страница с cpu"
А кофе на клавиатуру тоже вирус пролил?
|
|
bugmenot (статус: 3-ий класс), 12 июня 2011, 19:56 [#6]:
вообще там Seek совсем не нужен
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
MerryJane (статус: Посетитель), 12 июня 2011, 20:41 [#7]:
ошибка о которой и писала виктория(от моего имени спасибо ей большое) оказалась не в этом цикле.
Всем спасибо кто откликнулся(=
|
12 июня 2011, 20:42: Статус вопроса изменён на решённый (изменил автор вопроса — MerryJane)
|
Gooddy (статус: 3-ий класс), 12 июня 2011, 23:07 [#8]:
Всегда пожалуйста.
Чисти код! Чисти код! Чисти код!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|