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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Компилятор тебе что, ошибки не показывает? Не надо делать из форума удаленную версию "Alt+F9"... Можешь вполне сам догадаться, что
procedure newcd;
begin
with single do
begin
write('Enter artist: ');
readln(artist);
write('Enter title: ');
readln(title);
writeln('Enter style ©lassical, (J)azzm ®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;

ты уже не находишься внутри With, и filepos компилятор справедливо считает функцией из модуля System... А эта функция требует параметров... Так что придется добавить:
Цитата
Seek(diskfile, single.filepos);


Ну и дальше по-тексту идет полный бардак с именами переменных (char вместо tchar, string вместо tstring, запятые вместо точек, и т.д.)

Исправляй...
 К началу страницы 
+ Ответить 

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

 





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