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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 21:22   #1
nulyjarden
Пользователь
 
Регистрация: 03.04.2010
Сообщений: 26
Восклицание удаление полей в Record

Доброго времени суток
Мне нужно удалить поля из Record.
Код:
//это проверка
AssignFile(F, 'F.dat');
  Reset(F);
  IsFound := False;
  While not EoF(F) do begin
    Read(F, Zap);
    if Zap.Naim= 'Наименование: '+Edt5.Text then begin
      IsFound:= True;
      Break;
    end;
  end;
  if IsFound then begin
  /// а вот тут нужно удалить эти поля из файла
 /// как это делать ума не приложу
Формат записи в Record:
TZap= record
Naim: String[50];
Count: String[30];
Cena: String[30];
Summ: string[30];
Pro: string[1];
end;
Я думаю что можно сдвигать записи, но что делать с последней

Последний раз редактировалось nulyjarden; 29.04.2011 в 21:26.
nulyjarden вне форума Ответить с цитированием
Старый 30.04.2011, 11:55   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) Вам нужно удалить не поля, а ЗАПИСИ (с нужным значением полей)

2) на форуме неоднократно предлагались решения.
в общем случае они сводятся к двум вариантам.
1) все записи после каждой удаляемой аписи сдвигаются на одну позицию к началу. (переписывать в цикле последующую запись на место предыдущей).
после окончания файл обрезается по нужное место командой
truncate(f);

2) все записи, кроме удаляемых переписываются в новый (временный) файл. После окончания записи. Оба файла (исходный и временных) закрываются. Исходный переименовывается в ИмяФайла.BAK (или просто удаляется),
а временный файл переименовывается в ИмяИсходногоФайла

3) в реальных (практических) задачах для эффективности добавляют поле-признак удаления записи. Записи, которые нужно удалить - просто помечают как удалянные (устанавливают признак). При обработке данных все записи с этим признаком игнорируются Это самый быстрый и эффективный способ..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое число полей в Record Alex2391 Общие вопросы Delphi 6 13.02.2011 21:26
В чём различие записей Record от Packed Record? Terran Общие вопросы Delphi 7 08.06.2010 17:14
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются kenta БД в Delphi 2 29.10.2009 08:28
Объеденение полей запроса в для отображения нескольких полей в одном списке mrCreator Microsoft Office Access 3 08.08.2009 00:53
Удаление/добавление полей runtime /Denis/ БД в Delphi 1 06.08.2008 22:35