Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Не понимаю: Удаление выбранной записи в файле (Delphi).
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
iron_mik iron_mik вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.05.2011
Question Не понимаю: Удаление выбранной записи в файле (Delphi). - 08.05.2011, 15:57

Дан типизированный файл stud.dat с информацией о студентах - записей:
Код:
type
  ...
  bal=array [1..10] of real;
  TStud=record
        FIO: string [80];
        Year: TDateTime;
        MedB: bal;
        Kurs: byte;
        Group: byte;
  end;
  fil = file of TStud;
var
  f:fil;
Так вот, есть процедура удаления выбранной записи в файле, которую я не могу понять:
Код:
procedure TDelete.SpeedButton1Click(Sender: TObject);
var k: byte;
//удаление записи
begin
  k := strtoint(edit1.Text);
  reset(f);
  seek(f, filesize(f) - 1); {1}
  read(f, s);                 {2}
  seek(f, k - 1);            {3}
  write(f, s);                 {4}
  seek(f, filesize(f) - 1);  {5}
  truncate(f);               {6}     
  closefile(f);
  displayall(MainForm.SGstud);
  Delete.close;
end;
k - это номер студента, т.е. номер записи, которую нужно удалить.
Как я понимаю на примере:
Например даны записи: 1 2 3 4 ; и k=2:
{1} 1 2 3_ 4 ,где "_" - это указатель
{2} Читаем 3-ью запись
{3} 1_ 2 3 4
{4} 1 3_ 3 4
{5} 1 3 3_ 4
{6} 1 3 3 - Остается только это
Я кажется что-то неправильно понимаю, объясните пожалуйста!
Ответить с цитированием
  (#2 (permalink)) Старый
iron_mik iron_mik вне форума
Новичок
 
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.05.2011
По умолчанию 08.05.2011, 16:09

Но код правильный. В программе все работает - удаляется только 2 запись. Но почему???
Ответить с цитированием
  (#3 (permalink)) Старый
leonardovich leonardovich вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.08.2011
По умолчанию 29.08.2011, 10:17

Цитата:
Сообщение от iron_mik Посмотреть сообщение
Но код правильный. В программе все работает - удаляется только 2 запись. Но почему???
Наверное поздно отвечаю, но только что зарегился на этом форуме.
По шагам:
1. Установить курсор на последней записи
2. Прочитать последнюю запись
3. Установить курсор на удаляемую запись
4. Перезаписать в позицию удаляемой записи последнюю, считанную в п.2
5 и 6 Усечь файл на одну последнюю запись, которую мы уже переписали в позицию удаляемой (п.4)
Всё просто
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление учетной записи администратора на MAC Valkr Любые вопросы от новичков 6 27.01.2012 18:38
Удаление учётной записи got7777 Любые вопросы от новичков 1 17.02.2011 00:59
Удаление текущей записи Ado xolomka Delphi 1 20.05.2010 15:53
Access как поместить запрос на удаление записи AlexanderSYBD Другие СУБД 1 30.07.2009 12:41
Как отсортировать записи в файле GT150 С/С++ 4 26.05.2008 16:24
Как восстановить данные в файле .DBF после выполнения в delphi функции .EmptyTable ujin_t Delphi 2 21.12.2007 21:09
TClientDataSet удаление записи Garik888 Delphi 5 21.06.2006 15:54
Удаление стуктурированной записи из файла gleban С/С++ 10 27.05.2006 13:53
Как сделать добавление и удаление в файле с помощью диалоговых окон lapkin Вопросы начинающих программистов 2 05.01.2006 18:33
База данных в файле. Удаление всех фактов-дублей. Alexeika Prolog 19 10.12.2004 23:13
Удаление объектов на Delphi _Goga Delphi 0 07.06.2004 21:31
Как добавлять записи в ADO и Delphi hooligan Delphi 1 17.10.2003 21:28



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов