Вниз
Скачать: CL | DM;

packed record   Найти похожие ветки 

← →
Firefly ©   (2006-05-25 21:35) [0]

Народ, подскажите, как удалить запись из packed record?


← →
Desdechado ©   (2006-05-25 21:40) [1]

запись из записи? оригинально


← →
Firefly ©   (2006-05-25 21:46) [2]

Неправильно выразился.
Один элемент из record


← →
Desdechado ©   (2006-05-25 21:51) [3]

record - это тип данных
из переменной какого-либо типа нельзя что-то "удалить"


← →
Firefly ©   (2006-05-25 21:57) [4]

Извиняюсь.
Не рекорд, а типизированный файл, в который записаны рекорды.
В файле есть 5 рекордов. Нужно удалить, скажем, второй.
Я надумал делать так: создать еще один файл, в него переписать все рекорды кроме удаляемого, исходный файл грохнуть, новому присвоить имя исходного.
Но хотелось бы сделать поизящнее:-))


← →
Джо ©   (2006-05-25 22:01) [5]

пишем в редакторе
type
 TMyRecord = packed record
   a: Integer;
 end;

Подводим курсор к нужному полю, нажимаем и удерживаем клавишу Del до достижения нужного эффекта.


← →
Джо ©   (2006-05-25 22:03) [6]

> Я надумал делать так: создать еще один файл, в него переписать
> все рекорды кроме удаляемого, исходный файл грохнуть, новому
> присвоить имя исходного.

Нормальный вариант. Еще один: считать весь файл в память, при его записи на диск не записывать требуемые записи.


← →
Virgo_Style ©   (2006-05-25 22:03) [7]

Firefly ©   (25.05.06 21:57) [4]
поизящнее


добавить в запись флаг "удалена"


← →
Firefly ©   (2006-05-25 22:18) [8]


> [5] Джо ©

Надеюсь, вы просто забыли поставить смайлик, ведь я вовремя поправился)))
Файл изначально пихается в поток, сохраняю его тупо:
MyStream.free;
В том-то и вопрос - как из сохранить на диск только требуемые записи?

>  Virgo_Style

Можно и так, но при частом добавлении/удалении записей файл будет неоправданно разрастаться.


← →
Sergey Masloff   (2006-05-25 22:25) [9]

Firefly ©   (25.05.06 22:18) [8]
>Файл изначально пихается в поток, сохраняю его тупо:
>MyStream.free;
мда... действительно для сохранения оно как-то того...

>записей файл будет неоправданно разрастаться.
На фига. Новые писать поверх тех что с флагом


← →
unknown ©   (2006-05-25 22:26) [10]


> Firefly ©   (25.05.06 22:18) [8]
> неоправданно разрастаться.

Надо просто организовать механизм упаковки - т.е. переписываем
в новый файл данные из старого, за исключением помеченных на
удаление, затем старый файл заменяем новым.


← →
Loginov Dmitry ©   (2006-05-25 22:29) [11]

Firefly ©   (25.05.06 22:18) [8]
В том-то и вопрос - как из сохранить на диск только требуемые записи?


В [4] и [6] все уже сказано.

(Думаю, поизящнее = максимально эффективно)?


← →
Firefly ©   (2006-05-25 23:02) [12]


> [9] Sergey Masloff

Попробую так.

> [11] Loginov Dmitry ©

:-))Поизящнее - покрасиВШе.
Еще играет детское желание выпендриться, сделать как-нибудь похитрее)))

В любом случае, всем ответившим - спасибо!


← →
tesseract ©   (2006-05-26 09:21) [13]

Очередное  изобретение DBF?

Почему бы просто не вести счёт удалённым записям. ввести ещё одиy параметр - Deleted, и при сохранении проверять его, Если он стоит, то на его место записываем новые данные, если нет - идём дальше.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
2-1148035612
Elen
2006-05-19 14:46
2006.06.11
Переопределение процедур меню другой программы


2-1148501573
Юнкер
2006-05-25 00:12
2006.06.11
Как получить ответ от IdUDPServer ввиде структуры?


2-1148792000
brother
2006-05-28 08:53
2006.06.11
Линейное движение


1-1146100720
vidiv
2006-04-27 05:18
2006.06.11
Как быстро экспортировать RichEdit в свой формат?


2-1148664435
Firefly
2006-05-26 21:27
2006.06.11
VS2005




   Наверх