Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.058 c
2-1266495492
NewGuest
2010-02-18 15:18
2010.08.27
Удаление компонентов в Run-Time


2-1270711682
12
2010-04-08 11:28
2010.08.27
MSSQL, номер записи в select


15-1265370112
DillerXX
2010-02-05 14:41
2010.08.27
Пыль


15-1262347734
Kerk
2010-01-01 15:08
2010.08.27
Мысли про различия и эволюцию


2-1270210504
Вэн
2010-04-02 16:15
2010.08.27
Апдейтер для ММО





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский