![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Всем причет. Копирую файл в потоке через TFileStream
В форме жду завершения потока и т.д. Дык вот, когда поток завершился, хочу скачать еще раз тоже самое, а он, НЕ ВСЕГДА, но вишет что не может получить доступ к файлу ToFileName. Вроде в моей конструкции, файл 99,9% точно должен быть закрыт.... Но попадаю на эту ошибку. Тык вопрос, как его принудительно закрыть, что бы уже точно 100% был закрыт моей прогой ? Чужие конечно не в счет. |
|||
|
||||
| ZBugz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Шо, нихто не знам ?
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Так в данном коде видно только, что имеется ненужная проверка на nil.
А ошибок из данного кода никаких не следует. Описание проблемы тоже ясности не привносит. Так что и сказать нечего... |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Хотя, не думаю, что при вызове деструктора этот метод не вызывается. |
|||
|
||||
| ZBugz |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Почему не нужная ? Если ошибка будет до создания TFileStream.Create, а тупо принудительно буду делать тому же ToStream.free кого в природе еще нет, то получать ошибку буду.
Ошибок то нету, только не пойму, это система файл не закрывает или это Delphi так работает...
Качаем файл, останавливаем или ошибка, возобновляем качание сразу же, натыкаюсь на то что конечный файл еще не закрыт... Ошибка, повтор, закачка, все хорошо... Добавлено через 1 минуту и 27 секунд
Я перед закачкой проверяю открытие файла. Я тоже думаю что он отрабатывает IshStream.Close; Хотя нужно проверить |
||||||||||
|
|||||||||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Из-за этого и нету доступа. Потому что дескриптор не закрыт. Используй блоки try {...} finally {...} end При возникновении исключение нужно самому освобождать ресурсы. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
||||
|
||||
| ZBugz |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 636 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Да, конечно, именно через try делаю, в finally делаю освобождение, потом посылаю всообщение и жду завершение потока. Т.е. в теории вообще файл открыт то не должен бы, finally сработал в потоке, да еще жду пока сам поток не завершиться.... А все равно если все шибко быстро сделать, то файл не закрыт... Добавлено через 4 минуты и 53 секунды Я че то не пойму к чему этот разговор ? Контр предложение почитать статью, где написанно кстати и о free и о destroy (http://www.gunsmoker.ru/2009/04/freeandnil-free.html) Я создаю в потоке
В конце делаю
В чем проблема то ? Или что то не корректно в коде ? Или такое типа нельзя делать что ли ? |
||||||||
|
|||||||||
![]()
|
| Правила форума "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. |