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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 17:36   #1
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию Типизированные файлы прямого доступа.

В типизированном файле прямого доступа исключить все четные компоненты.

Как???
Nice Plant вне форума Ответить с цитированием
Старый 27.02.2010, 18:36   #2
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Ну, например, можно их по очереди исключить, не?
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 28.02.2010, 19:56   #3
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

а как же курсор сдвига в файле???
Nice Plant вне форума Ответить с цитированием
Старый 28.02.2010, 20:34   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

А чем Seek Вас не устраивает?
psycho-coder вне форума Ответить с цитированием
Старый 01.03.2010, 01:58   #5
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

Он то устраивает только как это все реализовать пошагово???
Nice Plant вне форума Ответить с цитированием
Старый 01.03.2010, 08:49   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
исключить все четные компоненты.
т.е. физически их оттуда удалить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.03.2010, 20:24   #7
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

да. возможно.
Nice Plant вне форума Ответить с цитированием
Старый 02.03.2010, 20:58   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

существует ТРИ основных способа удаления элементов (записей) из файла.

1) физически записи остаются не месте, но в каждой записи присутствует признак ISDELETED() - что данная запись удалена.
При работе с файлом в САМОЙ ПРОГРАММЕ такие записи не считываются, не обрабатываются, не выводятся пользователю и т.д.

2) если нужно получить файл, в котором физически нет удалённых записей, тогда,
открываем исходный файл на чтение,
открываем временный файл на запись,
переписываем во временный файл те записи, которые должны остаться.
После окончания (когда исходный файл закончился), закрываем оба файла.
Перименовываем исходный файл в архивную копию (например, Исходный.bak)
Переименовываем временный файл в файл, имеющий исходное имя.
Если всё прошло успешно, то резервную (архивную) копию можно удалить. (а лучше, конечно, оставить!)

3) самый муторный, долгий и крайне не надёжный (к сбоям), но зато позволяет обойтись без второго файла:
Открываем исходный файл.
Читаем, если натыкаемся на элемент, который надо удалить, то:
запоминаем позицию в файле
в цикле до конца файла переписываем все оставшиеся записи на место удаляемой
усекаем (truncate(f) ) файл на последней записи
возвращаемся (seek) и продолжаем цикл чтения с того места, где удаляли запись.


я бы рекомендовал Вам второй способ, как самый быстрый, наглядный, простой и надёжный!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.03.2010, 04:22   #9
Nice Plant
Пользователь
 
Регистрация: 18.12.2009
Сообщений: 23
По умолчанию

program Laba2;{Files_pr_dostup}
uses crt;
var
n,i,p,q : byte;
f : file of byte;
m :array [1..n] of byte;
begin
clrscr;
assign (f,'demo.dat');
rewrite (f);
for q:=1 to 20 do
begin
i:random(100);
write (f,i);
end;
writeln;
n:0;
repeat
seek (f,n);
read (f,p);
n:=filepos (f);
seek (f,2n-1 );
write (f,p);
n:=filepos (f);
until i=n;
close (f);
reset (f);
while not eof (f) do
begin
read (f,p);
write (p:4);
end;
end.


В чем ошибка.????
Nice Plant вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль работа с файлами прямого доступа -Spirit- Помощь студентам 4 10.01.2010 15:05
работа с файломи прямого доступа st1mUA Помощь студентам 0 20.10.2009 01:23
типизированные файлы felmor Паскаль, Turbo Pascal, PascalABC.NET 0 15.05.2009 09:49
типизированные файлы прямого доступа Arashi Паскаль, Turbo Pascal, PascalABC.NET 0 22.04.2009 16:44