Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2012, 22:31   #1
ameks94
 
Регистрация: 25.11.2012
Сообщений: 9
По умолчанию Нужно исправить ошибку в программе работы с файлами.

1)Программа должна заностить информацию про студента в файл базы данных
2) выводить иформацию из файла на экран.
Процедура ввода данных работает хорошо.... а вот процедура вывода не работает.

Код:
uses crt;
type
  Stud = Record
    Fa, Im, gr: String[10];
    no, kol, re: integer;
  End;

var
  n: integer;knopka,key: char;


procedure Vvod(kolstud: integer);{1 процедура ввода информации в базу данных.... которая вызывается: Vvod (kolstud) где kolstud-количество студентов с которыми процедура будет работать}
var
  i: Integer;
  a: Stud;
  f: file of Stud;
  FilName: String;
begin
  Write('Введите имя файла для записи: ');
  Readln(FilName);
  Assign(f, FilName);
  Rewrite(f); {Открытие файла для записи}
  for i := 1 to kolstud do
  begin
    with a do
    begin
      Write('Введите фамилию ', i, '-го студента: ');
      readln(fa);
      write('Введите имя: ');
      readln(im);
      write('Введите группу: ');
      readln(gr);
      write('введите номер книжки: ');
      readln(no);
      write('введите кол сделаных работ: ');
      readln(kol);
      write('рейтинг: ');
      readln(re); 
      write(f, a);{Запись в файл переписывается целиком}
    end;
  end;
  Close(f);
end;

procedure Vivodnaekran (); {2 процедура вывода на экран}
var
  FilName: String;
  e: stud;
  f: file of Stud;
begin
  assign(f, FilName);
  reset(f); {процедура для Открытия, чтения и записи в файл}
  while not EOF(F) DO
  begin
    READ(F, e);
    WRITE(e);
  end;
  CLOSE(F);
end;



begin{главная программа}
repeat
  writeln('Что бы ввести-1, что бы вывести на экран-2:');
  knopka:=readkey;
  case knopka of
    '1': begin writeln('введите количество студентов: '); readln(n); Vvod(n); end;
    '2': begin writeln('Информация о студентах:');Vivodnaekran (); end;
  end;
  writeln ('что бы продолжить нажмите 1');
  key:=readkey;
  until key<>'1';
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 25.11.2012 в 22:58.
ameks94 вне форума Ответить с цитированием
Старый 25.11.2012, 23:03   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ошибок много.
вот так пробуйте:
Код:
procedure Vivodnaekran (); {2 процедура вывода на экран}
var
  FilName: String;
  e: stud;
  f: file of Stud;
begin
  Write('Введите имя файла для чтения: ');
  Readln(FilName);

  assign(f, FilName);
  reset(f); {процедура для Открытия, чтения и записи в файл}
  while not EOF(f) DO
  begin
    read(f, e);
    with e do
    begin
      WriteLn('фамилия:',fa, ' имя:', im, ' группа: ', gr, 
         '№ книжки: ',no,' кол-во работ: ', kol,' рейтинг: ', re  );
    end;
  end;
  close(f);
  Readln; { подождём нажатия клавиши Enter}
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2012, 23:36   #3
ameks94
 
Регистрация: 25.11.2012
Сообщений: 9
По умолчанию

Serge_Bliznykov Большое спасибо))) всё заработало!
ameks94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправить ошибку в программе. Лександра Помощь студентам 1 13.05.2012 15:46
Исправить ошибку в программе MedvedPnZ Общие вопросы C/C++ 1 01.05.2012 20:37
Найти и исправить ошибку в программе inforus Общие вопросы Delphi 3 25.05.2010 23:52
Помогите исправить ошибку в программе Antifa Помощь студентам 3 29.04.2009 23:17