![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Можно , но имхо и так все объекты передаются только указателями в дельфи -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Siton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
Объект добовляется к строке, что бы потом сделать сортировку. Строка хранит номер файла, а объект хранит уровень приоритета. С помощью метода TStringList.CustomSort(CompareObjVal); и функции CompareObjVal сортируются номера файлов. После чего файлы обрабатываются в отсортированном виде.
Может быть есть возможность реализовать данный алгоритм по другому - без использования TStringList и AddObjects. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
где это хранится? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Добавлено @ 13:01 Вычитание адресов объектов это круто! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Siton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
Номер найденного файла хранится в slPr.Strings[i], а его приоритет обработки в slPr.Objects[i]. Зачем такая сортировка я еще неразобрался, но после сортировки меняется порядок slPr.Strings[i] и соответственно порядок обработки файлов. Но проблема в очистке.
Добавлено @ 13:20 Есть такое предположение что у одного из найденных файлов приоритет равен нулю и при добавлении к номеру этого файла объекта указывающего на ноль то происходит утечка.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Елки палки в адрес записали значение переменной, значит нет никакого объекта вообще! Вместо удаления - обращение к черт знает какому фрагменту памяти! Удалять ничего в этом случае не надо!
Добавлено @ 13:35 Поэтому и вычитались адреса, поскольку это не адреса вовсе! А просто значения записанные вместо адресса в переменную типа Pointer -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Siton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
Но потеря памяти остается. если закаментировать строку slPr.AddObject(IntToStr(iR),Pointer(iPr)); то утечка прекращается. Почему же тогда происходит утечка памяти
|
|||
|
||||
| Alexeis |
|
||||||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
TStringList - это на самом деле не список а динамический масив
, память , которого выделяется "if FCount = FCapacity then Grow;" порциями. Обычно, то что уже было выделено, не возвращается в кучу, поскольку велика вероятность повторного использования этого пространства. Добавлено @ 16:52 Вот как выглядит grow
Добавлено @ 16:54 А при удалении память не возвращается (не fremem ни чего подобного не наблюдается)
Добавлено @ 16:56 Так, что для освобождения памяти в вашем случае годится только slPr.free; -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||||||
|
|||||||||
| Mechanic |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Ясно куда?
Тут что-ли? Так ясно, что реально работают виртуальные методы наследников. Просто ХЗ, что будет унаследовано и передано, лучше уж в функу пущай базовый класс передается, раз ничего, кроме его методов там не используется. А арифметика в "адресах" Objects[] мне сразу не понравилась.. --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
И совсем не ХЗ - а будут вызываться одноименные функции, того класса, который был передан, правда только в том случае если в классе предка они определены были хотя бы абстрактно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Siton |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.7.2006 Репутация: нет Всего: нет |
Я решил вопрос с утечкой.
Яубрал эту строчку FSR:=aFSR[J]; А везде где встречается FSR заменил на aFSR[J]. И утечка исчезла. Спасибо всем за советы. |
|||
|
||||
| Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Имелось в виду, что неизвестно, что именно будет унаследовано от базового класса, и экземпляр какого именно типа будет передаваться на обработку. Вот поэтому всегда стараюсь принимать функами / процедурами минимально приемлемый класс. А с методами пущай уже сам экземпляр разбирается, зачем же ему VMT тогда? Никому же не придет в голову писать, например, потоковый обработчик, на входе который получает TFileStream вместо TStream, если к файлам обработчик никакого отношения не имеет? --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
![]()
|
| Правила форума "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. |