Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Turbo Pascal 7. Использование BlockWrite, BlockRead   Найти похожие ветки 

 
worldmen   (2010-03-02 00:35) [0]

Нужно написать прогу на Турбо Паскале с использованием BlockWrite, BlockRead. Я ниразу их не использовал, поэтому плохо получается. Прога должна обработать текстовый файл (оценки студентов), и записать обработанные данные в нетипизированный файл.
Вот чего я написал:

Uses crt;

Type
 stydents= record
  familia: string[15];
  ocenki : array [1..10] of integer;
  srBal  : real;
 End;

Var
 FailOut : File;
 FailTxt : Text;
 F01,F02,F22: string;
 x,y, bal, pbal: integer;
 i,o     : integer;
 stydent : array[1..40] of stydents;
 temp    : stydents;
 kolvoSt : integer;  {кол-во студентов в списке }
 Buf     : integer;

BEGIN
{ F01:= "Student.txt"; {Vhodn

 F02:= "Student.dat";
 F22:= "StudOut.dat";}

 Assign (FailTxt,"Student.txt");
 Reset(FailTxt);

 Readln(FailTxt, pbal);  {проходной бал }
 kolvoSt:=0;

 While not EOF(FailTxt) do
 begin
   y:=0;  {kol-vo ocenok }
   x:=0;  {kol-vo studentov }
   bal:=0;
   Read(FailTxt, temp.familia);
   while not Eoln(FailTxt)  do
   begin
     inc(y);
     Read(FailTxt, temp.ocenki[y]);
     bal:=bal+temp.ocenki[y];
   end;
   Readln(FailTxt);
   inc(x);
   temp.srBal:=bal/y; {средний бал}
   kolvoSt:=kolvoSt+1;
   stydent[kolvoSt]:=temp;
 end;
 Close(FailTxt);

 Assign (FailOut,"StudOut.dat");
 Buf:=SizeOf(stydent);
 ReWrite(FailOut, Buf);  

 BlockWrite(FailOut,stydent,Buf);
 Close(FailOut);

End.

Содержание файла Student.txt:
4 - Проходной бал
Иванов И.Н.    2 4 9 6
Петров С.В.    5 9 8 1
Сидоров А.В.   6 8 2 8

Возникает ошибка: "Runtime error 101" на
BlockWrite(FailOut,stydent,Buf);


 
Германн ©   (2010-03-02 00:50) [1]


> ReWrite(FailOut, Buf);

Объясни эту строку. Как и что тут должно выполниться?


 
Игорь Шевченко ©   (2010-03-02 00:55) [2]

в турбо паскале тоже есть отладчик


 
Германн ©   (2010-03-02 01:21) [3]


> в турбо паскале тоже есть отладчик
>


> Возникает ошибка: "Runtime error 101" на
> BlockWrite(FailOut,stydent,Buf);
>

Ну как бы, Игорь.
Отладчик уже задействован. А вопрос в "Начинающим".


 
icWasya ©   (2010-03-02 09:51) [4]

В rewrite/reset указывается размер одной записи;
в BlockRead/BlockWrite указывается количество записей этого размера.
поэтому либо так

Buf:=SizeOf(stydent);
ReWrite(FailOut, Buf);  

BlockWrite(FailOut,stydent,1);

либо так

Buf:=SizeOf(stydent);
ReWrite(FailOut, 1);  

BlockWrite(FailOut,stydent,Buf);


И при чтении соответственно
---
И на будущее называй переменные и типы так, что бы тебя другие понимали и сам не путался.
Например
вместо
type students = record
нужно
type TStudent = record
- почему студенты, хотя описывается один студент
Вместо
Buf:Integer
нужно например
BufLen:Integer
Как правило именем Buf называют массив, в который что-то пишут, а здесь это длина массива
Ну и после этого массив всех студентов вместо
student:array ...
назвать
students:array ...
Это конечно придирки, но препод тоже может прицепиться


 
Anatoly Podgoretsky ©   (2010-03-02 11:27) [5]

А главная придирка будет, почему сдалано с помощью нетипизированых файлов, когда здесь сильно напрашивается типизированый файл.
И конечно правильное название типов и переменных, что бы не было подобного бардака как
Type
  stydents= record

и
var
  stydent : array[1..40] of stydents;

Тут еще нелады со множесвенным и единсвенным


 
worldmen   (2010-03-04 21:21) [6]

Спасибо, получилось. (нетипизироваными файлами я уже сделал, мне надо теперь типизированными сделать).
А как теперь считать эту инфу из этого файла StudOut.dat, если там записи должны быть в виде... Я даже незнаю в каком виде.


 
worldmen   (2010-03-04 21:23) [7]

Думаю они в таком виде:
Иванов И.Н.    2 4 9 6Петров С.В.  5981Сидоров А.В.  6828


 
Anatoly Podgoretsky ©   (2010-03-04 21:26) [8]

> worldmen  (04.03.2010 21:23:07)  [7]

А для типизированого файла это не важно, работа ведется не с позициями, а с типами.


 
Anatoly Podgoretsky ©   (2010-03-04 21:27) [9]

> worldmen  (04.03.2010 21:21:06)  [6]

http://www.podgoretsky.com/Redir.aspx?id=143&DownloadFile=~/ddp/PasFiles.aspx



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.061 c
15-1269552602
Юрий
2010-03-26 00:30
2010.08.27
С днем рождения ! 26 марта 2010 пятница


15-1269943838
MAX
2010-03-30 14:10
2010.08.27
создание файлов .hlp


2-1275731745
REX
2010-06-05 13:55
2010.08.27
Смена рабочего файла БД


15-1270742112
denis_stell
2010-04-08 19:55
2010.08.27
количество дней


15-1270735483
Andy BitOff
2010-04-08 18:04
2010.08.27
Лицензионная Windows станет бесплатной