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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 00:37   #1
orandzheviyman
Пользователь
 
Регистрация: 11.11.2013
Сообщений: 74
По умолчанию Найти ошибку

Почему компилятор ругается при вызове процедур?
Код:
const MAXbook = 100; {ìàêñèìóì êíèã}
type
  Tbook=record {äàííûå êíèãè}
    surname:string[20]; {ôàìèëèÿ àâòîðà}
    bookname:string[50]; {íàçâàíèå êíèãè}
    year:longint; {ãîä âûïóñêà}
    genre:string[30]; {æàíð}
  end;
  pBook=^Tbook;
  TBookArray=array[1..MAXbook] of pBook;


PROCEDURE{ïóíêò 1} CreateNewFile(var AB:pBook; var N:integer; fname:string);
var
  f:file of Tbook;
  i:integer;
  count: char; {äëÿ ââîäà}
begin
  write('Ââåäèòå èìÿ ôàéëà: ');
  readln(fname);
  assign(f, fname);
  rewrite(f);
  i:=1; count :='y';
  while count ='y' do
  begin
    new (AB);
     with AB^ do begin
    writeln('Ââåäèòå äàííûå ', i, '-îé êíèãè');
    writeln;
    write('Ôàìèëèÿ àâòîðà: '); readLn(surname);
    write('Íàçâàíèå êíèãè: '); readLn(bookname);
    write('Ãîä âûïóñêà:    '); readLn(year);
    write('Æàíð:           '); readLn(genre);
    write(f, AB^);
    Dispose (AB);
    i := i + 1; end;
    if i<= MAXbook then begin
      write('ïðîäîëæèòü ââîä? (y - äà,ëþáàÿ êíîïêà - íåò)'); readln(count); end
    else begin; count:='n'; end;
  end;
  close(f);
  N:=i-1;
end;


PROCEDURE {ïóíêò 2} ShowList(AB:pBook);
var
  i:integer;
  N:longint;
  f:file of pBook;
  fname:string;
begin
  writeln ('Ââåäèòå èìÿ ôàéëà: '); read (fname);
  assign(f, fname);
  reset(f);
  N:=FileSize(f);
  for i:=1 to N do
   begin Read(f); end;
  writeln ('Ñïèñîê êíèã:');
  for i:=1 to N do
   with AB^ do begin
   writeln (surname:15,'     ', bookname:15,'      ', year:4, genre:15); end;
  close (f);
  writeln;
  writeln('Íàæìèòå ENTER äëÿ ïðîäîëæåíèÿ');
  Readln;
end;


PROCEDURE {ïóíêò 3} Poisk(AB:pBook; N:longint; FindYear:longint);
var i:integer;
    f:file of pBook;
    fname:string;
begin
  Writeln;
  Write ('Ââåäèòå èìÿ ôàéëà,â êîòîðîì íàäî èñêàòü: '); readln (fname);
  assign(f, fname);
  reset(f);
  N:=FileSize(f);
  write ('Ââåäèòå ãîä äëÿ ïîèñêà: '); readLn(FindYear);
   writeln;
  for i:=1 to N do
   begin Read(f); end;
  writeln('Êíèãè, âûïóùåííûå â ',FindYear,' ãîäó: ');
   for i:=1 to N do
    with AB^ do begin
     if year=FindYear then
         writeln(surname, ', ',bookname); end;
  writeln;
  WriteLn('Íàæìèòå ENTER äëÿ ïðîäîëæåíèÿ');
  Readln;
end;

var ALLbooks:TBookArray;
  fname:string; {èìÿ ôàéëà}
  N:integer; {ôàêò ÷èñëî êíèã}
  M:integer; {äëÿ ìåíþ}
  FindYear: longint;


begin
  N:=0;
  M:=0;
  while M <> 4 do begin
    writeln(' Ïðîãðàììà ó÷¸òà êíèã ');
    writeln('1 - Cîçäàòü íîâûé ôàéë');
    writeln('2 - Âûâåñòè íà ýêðàí ñîäåðæèìîå ôàéëà');
    writeln('3 - Ïîèñê êíèã ïî ãîäó');
    writeln('4 - Âûõîä');
    write('Ââåäèòå íîìåð òðåáóåìîé îïåðàöèè: ');
    readln(M);

    case M of
      1: CreateNewFile(TBookArray, N, fname); {ïóíêò 1 - ñîçäàíèå íîâîãî ôàéëà äàííûõ}
      2: ShowList(TBookArray); {ïóíêò 3 - âûâåñòè ìàññèâ ñ êíèãàìè íà ýêðàí}
      3: Poisk(TBookArray, N, FindYear);
    end; {end of case}
  end; {end of while}
end.
orandzheviyman вне форума
Старый 04.12.2013, 00:42   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

У вас TBookArray - название типа, а вы используете его в качестве имени фактического параметра.
type_Oleg вне форума
Старый 04.12.2013, 10:23   #3
orandzheviyman
Пользователь
 
Регистрация: 11.11.2013
Сообщений: 74
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
У вас TBookArray - название типа, а вы используете его в качестве имени фактического параметра.
Блин, там ALLbooks, но всё равно не работает
orandzheviyman вне форума
Старый 04.12.2013, 10:28   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
CreateNewFile(var AB:pBook;
А вы туда то тип пихаете, то
Код:
array[1..MAXbook] of pBook;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума
Старый 04.12.2013, 11:05   #5
orandzheviyman
Пользователь
 
Регистрация: 11.11.2013
Сообщений: 74
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
CreateNewFile(var AB:pBook;
А вы туда то тип пихаете, то
Код:
array[1..MAXbook] of pBook;
Разьясните, пожалуйста.
orandzheviyman вне форума
Старый 04.12.2013, 12:22   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Разьясните, пожалуйста.
Это значит что ты в вызов процедуры должен пихать не тип, а переменную.
TBookArray это тип массива
А нужно переменную, такую как ALLbooks
I'm learning to live...
Stilet вне форума
Старый 04.12.2013, 15:53   #7
orandzheviyman
Пользователь
 
Регистрация: 11.11.2013
Сообщений: 74
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это значит что ты в вызов процедуры должен пихать не тип, а переменную.
TBookArray это тип массива
А нужно переменную, такую как ALLbooks
Простите, но не могли бы вы просто поправить код, я так скорее пойму.
orandzheviyman вне форума
Старый 04.12.2013, 16:21   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ох пичалька...
Код:
    case M of
      1: CreateNewFile(ALLbooks, N, fname);
...
I'm learning to live...
Stilet вне форума
Старый 04.12.2013, 16:31   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ох пичалька...
Код:
    case M of
      1: CreateNewFile(ALLbooks, N, fname);
...
и что особенно печально и обидно, это то, что изначально у меня в коде (тут) так и было:
Цитата:
Код:
...
 case M of
      1: CreateNewFile(ALLbooks, N, fname); {пункт 1 - создание нового файла данных}
      2: OpenReadFile(ALLbooks, N, fname); {пункт 2 - прочитать файл в память}
Serge_Bliznykov вне форума
Старый 04.12.2013, 16:47   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Serge_Bliznykov
Нэпэрэжэвай )
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку в коде (Для данной целочисленной матрицы размером n*m найти матрицу из 0 и 1...) код на C camel5 Помощь студентам 1 26.11.2013 06:11
найти ошибку! огр Помощь студентам 2 04.06.2013 10:24
Найти ошибку 2 Lenty Общие вопросы C/C++ 4 16.06.2012 00:17
Найти ошибку. stas45rus Помощь студентам 3 17.01.2012 20:07