Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 53
от 13.05.2005, 21:20

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 3


Вопрос № 20583: Напишите пожалуйста как мне удалить определённую компоненту из файла Например у меня есть файл в нём находятся цифры 1 2 3 4 5 6 7 8 9 я задал поиск и нашёл нужную мне компоненту допустим это цифра 4 как мне её удалить а остальные...

Вопрос № 20583
Напишите пожалуйста как мне удалить определённую компоненту из файла
Например
у меня есть файл
в нём находятся цифры
1 2 3 4 5 6 7 8 9
я задал поиск и нашёл нужную мне компоненту допустим это цифра 4 как мне её удалить а остальные оставить
Вариант считать все данные в массив там всё удалить, а после просто записать в файл не подходит, нужно сделать всё именно с помощью процедур seek, Filepos и т.д.
Заранее благодарю
Отправлен: 08.05.2005, 21:13
Вопрос задал: ger (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: John Freeman
Здравствуйте, ger!
Никак - с помошью write,filepos,seek это не сделать, можно только заменить 4 на что-то другое, для удаления со сдвигом надо переписывать всё, что идёт после цифры 4 и менять размер файла или собсивенно то что ты написал не подходит.
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 08.05.2005, 21:31

Отвечает: Repose
Здравствуйте, ger!
Даже не представляю, как это можно сделать. Хотя можно немножко схитрить: если знать позиции последнего элемента и элемента, которого нужно удалить, то надо последний записать туда, где находится "4". А потом с помощью truncate удалить последний элемент.
Ответ отправил: Repose (статус: 1-ый класс)
Отправлен: 09.05.2005, 17:56

Отвечает: Boriss
Здравствуйте, ger!
Если Вы открыли файл как типизированный
var
f: File of integer;
то write(f,i); не меняет положения других, а только значение это элемента.
Так что алгоритм должен быть таким:
1) нашли положение того элемента, что нужно удалить и пусть число элементов известно FileSize как и раз даст число элементов (!) - и запоминаете положение
2) а теперь пошли - считываете следующее и записываете "сюда"; увеличиваете положение
3) в конце нужно отсечь последний элемент
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 11.05.2005, 18:11


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное