Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу удаление записи из БД. организация файлов кучей
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
asmProlog asmProlog вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.04.2015
По умолчанию удаление записи из БД. организация файлов кучей - 08.04.2015, 00:05

доброго времени суток!
не получается организовать удаление файлов из бд, а точнее из блоков.
в моем блоке хранится 5 записей. допустим, я записал 10 записей - следовательно, у меня имеется 2 блока и они имеют такой вид:
1| 2 | 3| 4| 5| 6| 7| 8| 9| 10
допустим, я удаляю запись 4, тогда на её место должна встать запись последняя запись из последнего блока и тогда примет вид такой:
1| 2 | 3| 10| 5| 6| 7| 8| 9| nill

надо как-то удалять старую запись и на её место записать новую, но я смог получить только там, что удаляются обе записи (и 4, и 10).

подскажите, пожалуйста, как это можно исправить?

delphi Код:
procedure TForm1.Button3Click(Sender: TObject);
var i1,i2,i3,k:integer; zach_ud:integer; net: boolean;  b_end: block;
begin
  net:=true;
  if listbox1.itemindex<>-1 then begin
    zach_ud:=Tek_zach;
    FileWork;
    for i2:=1 to filesize(f)-1 do begin
    Seek(f,i2);
    blockread(f,tek_block,1);
    for i1:=1 to 5 do
      if (tek_block.Zap_block[i1].id_zach=zach_ud)  then begin
      Seek(f,filesize(f)-1);
      blockread(f,b_end,1);                     //проверка на 1 блок
      for i3:=1 to 5 do
       if (b_end.Zap_block[i3].id_zach=0)  then begin//проверка на то, что следующая перед послед. запись - пустая
       if ((i3=1) and (b_end.Zap_block[i3+1].id_zach=0)) then begin
       tek_block.Zap_block[i1]:=b_end.Zap_block[i3];
       Seek(f,i2);
       blockwrite(f,tek_block,1); // обрезает с той позиции
       Seek(f,filesize(f)-1);
       truncate(f);
       end else
       tek_block.Zap_block[i1]:=b_end.Zap_block[i3-1];
       b_end.Zap_block[i3-1]:=zap0;
       Seek(f,i2);
       blockwrite(f,tek_block,1);
       Seek(f,filesize(f)-1);
       blockwrite(f,b_end,1);
       end;
       closefile(f);
       Print_all;
       exit;
       end;
       end;
    end;
  end;
Ответить с цитированием
Ads
Ответ

Метки
delphi , база данных , организация файлов кучей

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файлов Tdutybq Любые вопросы от новичков 5 05.07.2012 19:24
Удаление учетной записи администратора на MAC Valkr Любые вопросы от новичков 6 27.01.2012 18:38
Не понимаю: Удаление выбранной записи в файле (Delphi). iron_mik Вопросы начинающих программистов 2 29.08.2011 10:17
Удаление учётной записи got7777 Любые вопросы от новичков 1 17.02.2011 00:59
Удаление текущей записи Ado xolomka Delphi 1 20.05.2010 15:53
Влияние скорости записи DVD-дисков, на их качество записи файлов. Ната-ли Любые вопросы от новичков 5 12.12.2009 20:12
Access как поместить запрос на удаление записи AlexanderSYBD Другие СУБД 1 30.07.2009 12:41
Удаление файлов из Listbox ROLF Delphi 17 25.06.2007 19:14
TClientDataSet удаление записи Garik888 Delphi 5 21.06.2006 15:54
Удаление стуктурированной записи из файла gleban С/С++ 10 27.05.2006 13:53
Удаление файлов Bardessa PHP 2 11.12.2004 03:44
Удаление файлов Начинающий Офтопик 0 02.12.2003 14:00



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