![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Да, можно использовать шаблонный TList.
|
|||
|
||||
| Freimaks |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Да, я его и взял.
Делаю так: 1. Объявляю класс
2. Далее описываю Конструктор для класса Point
3. Ну и в заключении в процедуру чтения добавил заполнение Point
Теперь буду писать обработку инфы в TList |
||||||
|
|||||||
| Freimaks |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Вообще с TList получается как-то громоздко на мой взгляд.
Узнал такую вещь - в прогах на C++ данные закачиваются в память в виде динамического массива. Т.е. - каждая точка это структура (в делфи - record), а весь бин - это динамический массив структур. Вопрос - как описать массив из record в моем случае??? Сделал вот так
далее в переменных прописал
И далее в процедуре чтения:
Не знаю на сколько правильно, но ошибок не выдает... Это сообщение отредактировал(а) Freimaks - 18.4.2012, 11:02 |
||||||
|
|||||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Я бы использовал классы. Ведь, тебе все-равно нужно будет прогонять все точки через TDictionary для поиска дубликатов. В случае с классами будет копироваться только указатель, иначе — объект.
|
|||
|
||||
| Freimaks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
И еще - как установить этот компонент??? Я всегда работал только со встроенными компонентами и об установке сторонних никогда не слышал. Щас читаю http://docs.embarcadero.com/products/rad_s...collections.pdf Пока мало что понятно Это сообщение отредактировал(а) Freimaks - 18.4.2012, 14:42 |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Вечером. После работы и до футбола
@ Добавлено TDictionary — стандартный компонент начиная c Delphi 2009. Я надеюсь у тебя не Delphi 7? Это сообщение отредактировал(а) Qu1nt - 18.4.2012, 14:46 |
|||
|
||||
| Freimaks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Если честно, то у меня установлено Delphi XE2...
|
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Отлично. Это самая последняя версия на данный момент. Для того, чтобы его использовать достаточно подключить соответствующий модуль.
|
|||
|
||||
| Freimaks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
А, все завелось!!! Я просто не туда прописал Dictionary:TDictionary<Integer, Integer>; поэтому и не пахало!!!
А я уже начал гугл рыть на предмет установки этой примочки... |
|||
|
||||
| Freimaks |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Ну в общем вот пока что смог сделать с этим TDictionary:
Потом просто проверил работает ли
Выводит нужное число, т.е. скока было в файле. Все супер. Разбираюсь дальше. Добавлено через 6 минут и 26 секунд Прав ли я считая, что Key в Dictionary.Add и есть тот самый уникальный ключ, который показывает есть такая запись или нет? Если да, то как мне этот ключ получить? Наверно нужно в качестве ключа использовать что-то типа суммы MD5??? Если то что написал - бред, не пинайте! Пока только это пришло в голову... |
||||
|
|||||
| Freimaks |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Сделал как и советовали классами (пока только один завел, тестовый). И перестало работать.
Вот чего делаю: Завожу класс
Делаю конструктор:
В переменных добавляю новое значение
Ну и собственно процедура чтения:
В итоге при считывании выдает ошибку Access violation at address 0053c49d in module... |
||||||||
|
|||||||||
| Freimaks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Заменил TBinPoints_time = class(TObject) на TBinPoints_time = packed record и все заработало
|
|||
|
||||
| Freimaks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Появился еще один вопрос. А как после загрузки в TDictionary вернуть все ее содержимое? Т.е. мне же потом надо все переписать в новый файл.
Процедуру записи я написал, но как достать то, что лежит в TDictionary я так и не понял (отдельными полями я понял как достать). Т.е. что надо указывать в записи BaseStream.Write(???????????????, SizeOf(TBinPoints_time)); Сделал вот так, на сколько правильно я не знаю, но работает
Это сообщение отредактировал(а) Freimaks - 18.4.2012, 19:54 |
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: 22 Всего: 50 |
Ты не понимаешь разницы между record, packed record и class. Лучше чем в книге я тебе не объясню.
|
|||
|
||||
| Freimaks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 23.4.2011 Репутация: нет Всего: нет |
Да, в теории я не силен - буду читать щас
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |