![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Rocket |
![]()
Сообщение
#1
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Вот две процедуры:
procedure ShowRecord;
type
rec=record
nikename:string[10];
points:longint;
end;
var f:file of rec;
rec_:array[1..6] of rec;
n,y:integer;
st:string;
begin
settextstyle(4,0,2);
setcolor(9);
y:=0;
assign(f,'Records.dat');
{$I-}
Reset(f);
{$I+}
seek(f,0);
for n:=1 to 5 do
begin
read(f,rec_[n]);
outtextxy(150,150+y,rec_[n].nikename);
str(rec_[n].points,st);
outtextxy(200,150+y,st);
y:=20;
end;
end;
procedure Records;
type
rec=record
nikename:string[10];
points:longint;
end;
var f:file of rec;
rec_:array[1..6] of rec;
n:integer;
extra1:longint; extra2:string;
begin
n:=0;
assign(f,'Records.dat');
{$I-}
Reset(f);
{$I+}
n:=filesize(f);
seek(f,n);
n:=n+1;
outtextxy(250,250,'Please,enter the nikename.');
readln(rec_[n].nikename);
rec_[n].points:=time;
if n=6 then
begin
for n:=1 to 6 do
begin
read(f,rec_[n]);
read(f,rec_[n+1]);
end;
if rec_[n].points<rec_[n+1].points then
begin
seek(f,n);
read(f,rec_[n]);
extra1:=rec_[n].points;
rec_[n].points:=rec_[n+1].points;
rec_[n+1].points :=extra1;
extra2:=rec_[n].nikename;
rec_[n].nikename:=rec_[n+1].nikename;
rec_[n+1].nikename:=extra2;
write(f,rec_[n]);
end;
seek(f,6);
read(f,rec_[6]);
seek(f,5);
write(f,rec_[6]);
truncate(f);
end
else write(f,rec_[n]);
end;
При выводе пишет: диск рид эррор! В чём ошибка? Подскажите ,пожалуйста! ![]() |
Rocket |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Так в чём ошибка,ребята?
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Ну, как же
Цитата в чём ошибка ?Смотри: n:=filesize(f); { число записей в файле }
...
if n = 6 then begin { запомни, n = 6 !!! }
...
for n:=1 to 6 do
begin
read(f,rec_[n]);
read(f,rec_[n+1]);
end;
...
Сколько ты прочел записей из файла в цикле? А сколько у тебя всего есть в файле? Вот тебе уже и чтение за пределами файла... Получите, распишитесь... |
Rocket |
![]()
Сообщение
#4
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: ![]() ![]() ![]() |
Моя задумка заключается в том,чтобы первые пять рекордов сначала записались в файл,а потом,когда добавлялся шестой, происходила сортировка от большего к меньшему. Или лучше как-то по другому это реализовать? Подскажите,пожалуйста.
Сообщение отредактировано: volvo - 14.01.2009 10:05 |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 10:34 |