![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 23
|
![]()
В типизированном файле прямого доступа исключить все четные компоненты.
Как??? ![]() |
![]() |
![]() |
![]() |
#2 |
Лжец и смутьян
Форумчанин
Регистрация: 03.04.2009
Сообщений: 194
|
![]()
Ну, например, можно их по очереди исключить, не?
Помогли тебе - помоги другому.
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 23
|
![]()
а как же курсор сдвига в файле???
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
![]()
А чем Seek Вас не устраивает?
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 23
|
![]()
Он то устраивает только как это все реализовать пошагово???
|
![]() |
![]() |
![]() |
#6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 18.12.2009
Сообщений: 23
|
![]()
да. возможно.
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
существует ТРИ основных способа удаления элементов (записей) из файла.
1) физически записи остаются не месте, но в каждой записи присутствует признак ISDELETED() - что данная запись удалена. При работе с файлом в САМОЙ ПРОГРАММЕ такие записи не считываются, не обрабатываются, не выводятся пользователю и т.д. 2) если нужно получить файл, в котором физически нет удалённых записей, тогда, открываем исходный файл на чтение, открываем временный файл на запись, переписываем во временный файл те записи, которые должны остаться. После окончания (когда исходный файл закончился), закрываем оба файла. Перименовываем исходный файл в архивную копию (например, Исходный.bak) Переименовываем временный файл в файл, имеющий исходное имя. Если всё прошло успешно, то резервную (архивную) копию можно удалить. (а лучше, конечно, оставить!) 3) самый муторный, долгий и крайне не надёжный (к сбоям), но зато позволяет обойтись без второго файла: Открываем исходный файл. Читаем, если натыкаемся на элемент, который надо удалить, то: запоминаем позицию в файле в цикле до конца файла переписываем все оставшиеся записи на место удаляемой усекаем (truncate(f) ) файл на последней записи возвращаемся (seek) и продолжаем цикл чтения с того места, где удаляли запись. я бы рекомендовал Вам второй способ, как самый быстрый, наглядный, простой и надёжный! |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 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. В чем ошибка.???? |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Паскаль работа с файлами прямого доступа | -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 |