IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите найти ошибку
Yarche
сообщение 10.11.2005 21:47
Сообщение #1


Гость






Довольно простая программа, но тем не менее ошибку найти не могу.
Когда пытаюсь открыть файл для дозаписи в конец файла выдает:"Error 63: Invalid file type". В чем может быть ошибка? unsure.gif
Код
Program studentdata;
const
N = 3;
type
tstudent = record
name: string;
result: byte;
end;
text = file of tstudent;
var
f: text;
i: integer;
man: tstudent;
begin
assign (f, 'C:\pascal\pascal1\readme.doc');
append (f);
For i:= 1 to N do
begin
write ('‚Введите имя: ');
readln(man.name);
write('‚Введите оценку: ');
readln (man.result);
writeln(f, man);
end;
close (f);
reset(f);
i:= 0;
while not EOF (f) do
begin
readln ( man.result);
if man.result = 5 then
i:= i+1;
end;
writeln( 'Число отличников: ',i);
close (f);
end.
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 21:52
Сообщение #2


Гость






Yarche,
Цитата
В чем может быть ошибка?
Да не может быть, а есть... Каким образом ты собрался типизированный файл открывать процедурой Append? Это возможно только для текстовых файлов...

Чтобы открыть типизированный файл на дозапись в конец, делай:
Reset(f);
Seek(f, FileSize(f));


Кстати, и на ReadLn/WriteLn ты тоже получишь ошибку. Для File Of ... допустимо только Read/Write...
 К началу страницы 
+ Ответить 
Guest
сообщение 10.11.2005 22:14
Сообщение #3


Гость






Спасибо. Ошибок больше не обнаружил.
Исправил Readln/writeln на read/write, но судя по всему он не записывает в файл. Поэтому где-то есть еще ошибка(и) smile.gif
З.Ы.: работой с файлами в Паскале занялся недавно, так что пока многое не понятно...
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 22:27
Сообщение #4


Гость






Не знаю, не знаю, у меня вот это отработало прекрасно:
Program studentdata;
const
  N = 3;
type
  tstudent = record
    name: string;
    result: byte;
  end;
  text = file of tstudent;

var
  f: text;
  i: integer;
  man: tstudent;

begin
  assign (f, 'readme.doc');

  reset(f);
  seek(f, filesize(f));
  For i:= 1 to N do begin
    write('Введите имя: '); readln(man.name);
    write('Введите оценку: '); readln (man.result);
    write(f, man);
  end;

  close(f);
  reset(f);
  i := 0;
  while not EOF (f) do begin
    read(f, man);
    if man.result = 5 then i:= i+1;
  end;
  writeln( 'Число отличников: ',i);
  close (f);
end.
cool.gif
 К началу страницы 
+ Ответить 
Yarche
сообщение 10.11.2005 22:44
Сообщение #5


Гость






Хм...вроде работает, но не совсем так, как хотелось бы. Программа должна записывать в файл имя и оценку (проверив файл я обнаружил, что он пустой).
И она должна считать сколько отличников (т.е. сколько оценок "5" мы ввели), у меня она каким то образом насчитала аж 7 отличников из 3ех возможных. blink.gif Я это имел ввиду. unsure.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 22:48
Сообщение #6


Гость






Хочешь, я вышлю тебе тот файл, который у меня был создан программой? Я же говорю, что работает. Какой компилятор у тебя?

Кстати, а файл ДО запуска программы существовал? Если нет, то вообще будет сбой, если ДА, то какой у него был размер?
 К началу страницы 
+ Ответить 
Yarche
сообщение 10.11.2005 22:53
Сообщение #7


Гость






Borland Turbo Pascal 7.0. Прикрепи пожалуйста файл. wink.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 10.11.2005 22:59
Сообщение #8


Гость






Цитата(Лог работы)
Введите имя: Ivanov
Введите оценку: 3
Введите имя: Petrov
Введите оценку: 4
Введите имя: Sidorov
Введите оценку: 5
Число отличников: 1


Тестировалось на FPC 2.0.0
Вот тот файл, что получился (в архиве):


Прикрепленные файлы
Прикрепленный файл  readme.rar ( 93 байт ) Кол-во скачиваний: 139
 К началу страницы 
+ Ответить 
Yarche
сообщение 10.11.2005 23:03
Сообщение #9


Гость






Премного благодарен give_rose.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 28.07.2025 17:47
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"