Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Работа с записями типа Record


Автор: seferot 30.12.2008, 11:53
Здравствуйте!

Господа, подскажите пожалуйста, как удалять записи типа Record из файла?

Дело в том, что есть прога которая хранит некоторую инфу в файле типа record.
Читать и писать туда могу свободно, но как удалить любую запись например посередине пока не знаю...

Вот как выглядит запись:

log = record
   Name   : string [50];
   Base    : string [20];
   info      : string [100];
   nomer  : integer ;
   data     : string [10];
   memo  : string [250];
end;

Автор: Rodman 30.12.2008, 12:01
Считуешь все данные в массив типа структура...
а потом перезаписываешь данные без это строки

Автор: Deniz 30.12.2008, 12:02
seferot, можно пометить запись как удаленную и потом либо в нее внести новую или упаковать(переписать в новый файл без удаленных)

Автор: seferot 30.12.2008, 12:04
Есть ли у вас пример? Очень охото посмотреть!

Добавлено через 3 минуты и 37 секунд
Цитата(Rodman @ 30.12.2008,  12:01)
Считуешь все данные в массив типа структура...
а потом перезаписываешь данные без это строки

Перезаписать считанную запись пустыми полями?

Автор: Rodman 30.12.2008, 12:24
Цитата(seferot @  30.12.2008,  12:04 Найти цитируемый пост)
Перезаписать считанную запись пустыми полями? 

нет... просто не писать ее при записи в файл..

Автор: seferot 30.12.2008, 13:00
А как это будет выглядеть?
 
read(f, fs) ;  // Считываю запись

write (f, fs) ; // Записываю

Так что ли???

Добавлено через 1 минуту
Цитата(seferot @ 30.12.2008,  13:00)
А как это будет выглядеть?
 
read(f, fs) ;  // Считываю запись

write (f, fs) ; // Записываю

Так что ли???

Не заполняя при этом структуру fs.

Автор: Deniz 30.12.2008, 13:11
seferot, не совсем.
У тебя есть какой-то признак того, какую запись удалить.
Далее запись в другой файл:
Код

while not eof(f) do begin
  read(f, fs);
  if <проверка признака> then write(f2, fs);
end;
с массивом примерно тоже самое.
Код

// читаем все в массив
while not eof(f) do begin
  read(f, fs);
  mass[i]:=fs;
end;
// записываем из массива
for i:=1 to <кол-во в массиве> do
  if <проверка признака> then write(f, fs);

Автор: seferot 30.12.2008, 13:20
Теперь мне все понятно. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)