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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2010, 23:53   #1
prod87
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 48
По умолчанию Удалить строку из типизированого файла Delphi

Нужно удалить строку из типизированого файла.
Какая функция єто делает?
prod87 вне форума Ответить с цитированием
Старый 03.07.2010, 00:24   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

никакая.
переисывайте в файле все строки начиная с удаляемой.
и то это если файл простой текстовый(TextFile/Text)
в Делфи можно использовать TStringList для этого.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.07.2010, 00:40   #3
prod87
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 48
По умолчанию

Да уже понял что никакая :/
Создал еще один файл(временный) такого же типа и записал в него все строки, кроме удаляемых. А потом rewrite и переписал все содержимое из временного в исходный.
Подскажите ф-ю, колторая удаляет файл.

п.с. Заучился) Что бы отправить сообщение нажал F9 :D
prod87 вне форума Ответить с цитированием
Старый 03.07.2010, 00:58   #4
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

function DeleteFile(const FileName: string): Boolean;
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 03.07.2010, 09:09   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от prod87
Создал еще один файл(временный) такого же типа и записал в него все строки, кроме удаляемых.
это правильно.
Цитата:
Сообщение от prod87
А потом rewrite и переписал все содержимое из временного в исходный.
а вот это = неправильно! Точнее - нерационально!
лучше действовать по такой схеме.
1) Все оставляемые записи записываем в новый файл. Закрываем его. (это то, что Вы и сделали).
2) текущий файл ПЕРЕИМЕНОВЫВАЕМ (например, с именем ВашФайл.BAK (если файл ВашФайл.BAK существует - его предварительно надо удалить)
3) новый файл (с оставленными записями - который мы создали) переименовываем в ВашФайл.ВашеРасширение

всё!

примерно это будет выгядеть так:
Код:
  // Тут Ваш код записи в новый файл
  AssignFile(FNew, '$$temp$$.tmp');
  Rewrite(FNew);
  for i:=1 to AllRecord do
    // Если запись не удалена - пишем её в новый файл
    if Зaпись_НЕ_Удалена then
          Write(FNew, Запись);

  CloseFile(FNew);

  // переименуем старый в .BAK
  AssignFile(F, YourFileName);
  if FileExists(YourFileName+'.BAK') then
    DeleteFile(YourFileName+'.BAK');
  Rename(F, YourFileName+'.BAK');

  // переименуем временный в рабочий файл данных
  Rename(FNew, YourFileName);

  ShowMessage('Сжатие успешно произведено!' +#13+#10+
    ' Старый файл сохранён с именем '+YourFileName+'.BAK');
p.s. в "настоящих" программах делают немного не так.
В каждой записи заводят признак удалена запись или нет. Если запись удаляют, то НИЧЕГО никуда не переписывают, а просто изменяют этот признак. Записи с признаком удалённые не читаются/не выводятся/не обрабатываются программой. Т.е. пользователь их не видит. Но физически они есть. И в программе добавляется функция "Сжатия" - вот тогда срабатывает механизм с созданием нового файла, переписываем туда неудалённых записей, переименованиями и т.д..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить из текстового файла первую строку. annosinceva Общие вопросы C/C++ 1 31.05.2010 14:19
Как программно удалить одну строку из текстового файла(txt)? lexus_samara Общие вопросы Delphi 6 24.04.2010 22:57
Удаление из типизированого файла SnowSin Помощь студентам 1 06.12.2009 16:08
Удалить последнюю строку из файла Flame_of_Death Помощь студентам 6 21.07.2009 13:48
помогите удалить строку и столбец в Delphi ЛесенОК Помощь студентам 4 01.02.2009 19:30