Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Ломанные линии. Запись на диск...   Найти похожие ветки 

 
Zilog ©   (2004-09-21 14:27) [0]

Нариосвал программку, позволяющую рисовать ломанные линии. (прокладывать маршруты). Алгоритм реализован следующим образом:

есть массив, который хранит начальные точки каждого из маршрутов.
при добавлении новой точки маршрута, динамически выдляется память под точку, которая хранит в себе состояние (связи) о предыдущей и (возможно) следующей точки.

type TMapLine = class
 X,Y  : integer;
 Next   : pointer; //следующая точка (nil если такой нет)
 Prev   : pointer; //предыдущая точка точка (nil если такой нет)
end;

Говоря попросту - по сути все маршруты (сломанные линии) раскиданы в памяти где попало.

Задача - как все данные скинуть на диск (ну и грузить обратно, в последствии). Подскажите варианты Pls.


 
MBo ©   (2004-09-21 14:31) [1]

Обыкновенный обход связанного списка.
Задача сохранения будет проще и быстрее, если хранить данные последовательно - в динамическом массиве или псевдосписке типа TList - массив сохраняется одной командой.


 
Digitman ©   (2004-09-21 14:42) [2]


> раскиданы в памяти где попало


а чем изначально не угодили объекты, реализующие то же самое, но в виде массивов ? Тот же TList, например ? ЧЕМ опрадан выбор алгоритма хранения списка в виде несмежных (связанных ссылками) блоков ?


 
DiamondShark ©   (2004-09-21 14:58) [3]


> ЧЕМ опрадан выбор алгоритма хранения списка в виде несмежных
> (связанных ссылками) блоков ?

Например, удобно теоретико-множественные операции над объектами производить. Не надо массивы точек гонять с места на место. Только вставки/разрывы узлов.


 
Zilog ©   (2004-09-21 14:59) [4]

2Digitman MBo

А не могли бы вы пояснить, как использовать TList в моем случае?
а то я не очень понимаю...


 
Zilog ©   (2004-09-21 15:03) [5]

2 DiamondShark

я собственно так и делаю.
вопрос - как это записать на диск. и прочитать обратно.


 
MBo ©   (2004-09-21 15:05) [6]

>Zilog ©   (21.09.04 14:59) [4]
Не TList, а его аналог, вместо указателей содержащий записи твоего типа - причем Next,Prev уже не понадобятся, и можно просто TPoint хранить.


 
Digitman ©   (2004-09-21 15:05) [7]


> DiamondShark ©   (21.09.04 14:58) [3]


> Не надо массивы точек гонять с места на место. Только вставки/разрывы
> узлов


конечная производительность зависит от процентного соотношения числа операций вставок/удаления к числу операций выборок из списка

если список  редко обновляется, но гораздо чаще используется для поиска/выборки, то смежное хранение записей будет ощутимо эффективней


 
Zilog ©   (2004-09-21 15:07) [8]

А если поставить вопрос по другому:
мне удобна та форма представления, которая есть сейчас.
Как в таком случае решить проблему записи на диск?


 
Digitman ©   (2004-09-21 15:16) [9]

открываешь файл
двигаешься по списку, от первого эл-та до последнего
структуру TPoint очередного эл-та записываешь в открытый файл
закрываешь файл

какие сложности ?



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

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.089 c
4-1094636556
HeKTO
2004-09-08 13:42
2004.10.10
Подскажите функцию определения координат чужого окна..забыл...


1-1095949017
zokzok
2004-09-23 18:16
2004.10.10
StringGrid


14-1095421920
borrris
2004-09-17 15:52
2004.10.10
неужели в Москве приезжим так непросто?


1-1096114333
Relaxxx
2004-09-25 16:12
2004.10.10
Как мне в КомбоБокс запихнуть ЧекБоксы???


14-1095631738
jack128
2004-09-20 02:08
2004.10.10
Народ, а как в старших версиях Дельфей (6 и выше) с CodeExplorer?