![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Люди! Человеки! Которую неделю видел в программе один странный глюк, но всё руки не доходили, а теперь дошли :/... День сидел в отладке и поисках - ноль по фазе. В общем - ошибка при работе с памятью (90% - все симптомы). Не удаётся выделить тот кусок программы, который даёт ошибку, поэтому я её обрезал до "необходимого минимума ошибки":
Вот тут исходники Пожалуйста, посмотрите, в чём дело. Компилировал на делфи7. Для того, чтобы произошла ошибка нужно создать папку "C:\Dolphin\1\234' (да можно любое, просто по умолчанию такая была -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| p0s0l |
|
||||||||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Немного глянул...
Это происходит на ExtractAssociatedIcon - посмотри недавние темы, была темка про ошибку в этой функции (она изменяет FileName, хотя не должна...
Если закомментировать строку: TExplorerThreadNotifyDirectoryChange.Create(False,s,DirectoryChanged,CurrentGUID,@CurrentGUID); то ошибки не происходит, видимо ошибка тут... Если присмотреться, то сомнительным кажется код:
Выделяется памяти FileNameLength + 2, а обнуляется в 4 раза больше... А я делал так, чтобы особо не мудрить:
Заменив этот код , и убрав этот кусок:
Ошибок больше не вылазило, но почему-то переименование отлавливается только 1 раз... Это видимо уже где-то логическая ошибка... -------------------- С уважением, г-н Посол. |
||||||||||
|
|||||||||||
| Illusion Dolphin |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
Да, это один из "интересных мест". действительно, с этой функцией были неполадки (я это давно заметил, но в связи с тем, что это не единственное место такого типа, не убирал его). Я поищу на эту тему справку. А в чём точно эта ошибка выражается? Почему она лезет совсем в "левую" память?
Это всё норма, это я уже начал "мудрить" с горя (проблвал преувеличить ошибку, если она тут 8) ). Там 4-ки нет. Этот модуль без ошибки (я ещё более упростил проект, уже вообще полупустая прога, но с ошибкой 8)...). P.S. нашёл топик по ExtractAssociatedIcon... это по-моему то, что и было... -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
| Петрович |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 25 Всего: 55 |
Это не ошибка! Читайте MSDN:
to Illusion Dolphin
Поищи, то ли здесь, то ли на сорсах я об этом уже писал. Если кратко, то: ExtractAssociatedIcon в lpIconPath возвращает измененный путь. Причем, иногда, как в твоем случае этот путь длинее чем тот который ты ему передал. Вот ExtractAssociatedIcon и вылезает за пределы той памяти гда у тебя размещался путь передаваемый в него. Надо перед вызовом ExtractAssociatedIcon создать буфер размером MAX_PATH символов (+1 для завершающего #0), скопировать туда твой путь, и именно этот буфер передавать в ExtractAssociatedIcon. Это сообщение отредактировал(а) Петрович - 11.8.2004, 09:10 -------------------- Все знать невозможно, но хочется |
||||||
|
|||||||
![]()
|
| Правила форума "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. |