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

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

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

> Файлы, seek
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 21
Пол: Мужской
Реальное имя: Andrej

Репутация: -  0  +


Код
program p128randacc;

type
cd = record
        artist : string[40];
        title : string[40];
        style : char;
        rating : integer;
        filepos : longint;
end;
var
        diskfile : file of cd;
        single : CD;
        counter : integer;
        choice : char;

procedure newcd;
begin
with single do
        begin
                write('Enter artist: ');
                readln(artist);
                write('Enter title: ');
                readln(title);
                writeln('Enter style (C)lassical, (J)azzm (R)ock, (F)olk: ');
                readln(style);
                writeln('Enter rating (0-9)');
                readln(rating);
                filepos := counter;
        end;
        seek(diskfile,filepos);
        write(diskfile,single);
        counter := counter + 1;
end;

procedure showone(disk : CD);
begin
if single.artist[1] <> chr(255) then
        with disk do
                begin
                writeln('Record number: ',filepos);
                writeln(artist);
                writeln(title);
                writeln(style);
                writeln(rating);
        end;
end;

procedure display;
var
        loop : integer;
begin
        for loop := 1 to counter -1 do
        begin
                seek(diskfile,loop);
                read(diskfile,single);
                showone(single);
end;
end;

procedure search;
var
        loop : integer;
        target : string[40];
begin
        writeln('Enter artist to search for: ');
        readln(target);
        for loop := 1 to counter-1 do
                begin
                seek(diskfile,loop);
                read(diskfile,single);
                if single.artist = target
                then showone(single);
        end;
end;

procedure editrec;
var
        target : longint;
        tstring : string[40];
        tchar : char;
begin
        write('Record number? ');
        readln(target);
        if (target>0) and (target<counter)
                then begin
                seek(diskfile,target);
                read(diskfile,single);
                showone(single);
                write('Enter new name or [Enter]');
                readln(tstring);
                if length(tstring)>0 then single.artist := tstring;
                write('Enter new title or [Enter]');
                readln(tstring);
                if lenght(string)> 0 then single.title := tstring;
                write('Enter new style or [Enter]');
                readln(tchar);
                if char <> chr(13) then single.style := tchar;
                write('Enter new rating or [Enter]');
                readln(tchar);
                if tchar<>chr(13)
                        then single.rating := ord(tchar)-48;
                        seek(diskfile,target);
                        write(diskfile,single);
                        end;
                        end;

        procedure deleterec;
        var
                target : longint;
        begin
                write('Record number? ');
                readln(target);
                if (target>0) and (target<counter)
                        thenbegin
                                single.artist[1] := chr(255);
                                seek(diskfile,target);
                                write(diskfile,single);
                        end;
                end;
                procedure closefile;
                begin
                        single.filepos := counter;
                        seek(diskfile,0);
                        write(diskfile,single);
                        close(diskfile);
                end;

begin
  assign(diskfile,'randcd.dat');
  reset(diskfile);
  read(diskfile);
  read(diskfile,single);

  counter := single,filepos;
  writeln('CD collection organiser');
  repeat
  writeln('New CD..............1');
  writeln('Display collection..2');
  writeln('Search by artist....3');
  writeln('Delete record.......4');
  writeln('Exit................5');
  readln(choice);
  case choice of
  '1' : newcd;
  '2' : display;
  '3' : search;
  '4' : editrec;
  '5' : deleterec;
  '6' : closefile;

  end;
  until choice = '6';
end.


Можете пожалусто помочь исправить ошибку в этом коде
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





- Текстовая версия 5.06.2024 5:16
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name