![]() |
|
![]() ![]() ![]() |
|
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Доброе время суток всем ;)
В наличии имеется файл со следующей структурой:
Записей может быть ооочень много. (средний размер текстового файла 15Мб) Посоветуйте пожалуйста, как лучше обрабатывать данный файл, учитывая то, что мне необходимо отрисовывать на объекте с помощью polyline и polygon объекты, по координатам, указанным в Data0 свойстве. ![]() |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
||||
|
||||
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Rififi, я понимаю что построчное чтение.
Каким лучше способом обрабатывать и где и как хранить обработанные данные, ибо отрисовывать надо не 1 раз. А по мере изменения координат. А читать снова весь файл - ИМХО непрактично. Я склоняюсь в сторону TStringList, но как он поведет себя на таких объемах, не будет ли тормозить вот в чем вопрос. |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 7 Всего: 118 |
а чем обычные контейнеры, типа std::vector (при опред условиях, наверно, лучши выбор) хуже?
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
gather,
я понимаю что построчное чтение. тогда задавай конкретный вопросы. то, что описывается в секции POLYLINE представляется как единая структура данных. соответственно по мере парсинга накапливаешь массив таких структур. как хранить обработанные данные Type => enum Label => std::[w]string StreetDesc => std::[w]string CityIdx => [u]int RoadID => [u]int RouteParam => int* или std::vector<int> Data0 => массив или std::vector of Point { x, y } Nod1 => int* или std::vector<int> Nod2 => int* или std::vector<int> |
|||
|
||||
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Rififi, извиняюсь за некорректную постановку вопроса.
В итоге. Имеем из секции Data0 std::vector of Point { x, y } Можно пример, как использовать данный вектор? Просто никогда с ними не работал. ![]() По остальному - огромное спасибо. |
|||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
плохо он себя поведет ![]() здесь есть 2 варианта, либо мы загружаем все в память, либо нет. В первом случае потребуется описать POLYLINE как класс, читать секции [POLYLINE]...[END], парсить и создовать объекты класса Polyline, а потом класть их в тот-же вектор... Во втором случае можно парсить некоторое количество секций, отрисовывать их, опять парсить и тд... будет то-же самое, но памяти потребуется меньше.. Добавлено через 1 минуту и 1 секунду
на форуме их вагон и маленькая тележка |
||||
|
|||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 39 Всего: 64 |
-------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
Можно пример, как использовать данный вектор? Просто никогда с ними не работал.
|
|||
|
||||
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Rififi, artsb, Lazin, Спасибо.
Rififi, Если я правильно понимаю, то в приведенном Вами примере - в вектор будут складываться значения x,y одной секции [POLYLINE][END] Как быть, если таких секций около 15000? |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 18 Всего: 154 |
как то так |
|||
|
||||
Rififi |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 1 Всего: 36 |
то есть код парсинга может выглядеть примерно так
|
|||
|
||||
gather |
|
|||
![]() Rescue Officer ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 13.6.2007 Где: Russia, Lipetsk Репутация: нет Всего: 4 |
Ясно, спасибо.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |