Вверх ↑
Этот топик читают: Гость
Ответов: 574
Рейтинг: 1
#1: 2007-08-30 15:37:24 ЛС | профиль | цитата
Не пойму, куда наша тема делась... Извините.

Напомню. Товарищ tsdima по моей просьбе написал IC, который быстрее открывает картинки. Так вот проблема есть в том, что картинки после такого открытия сидят в памяти и если попытаться безопасно отключить флешку, с которой подобным образом открывались картинки, диалог Windows будет говорить, что это невозможно. Слова закрепляю примером:

code_1869.txt

Большая просьба! Доделайте код так, чтобы из памяти сразу после передачи картинки в поток и её отображения они очищались из памяти. Если что-то не так понял - поправьте!

Я не совсем правильно выразился... Картинка-то будет сидеть в памяти, так как она отображается на экране, но как её затем убрать оттуда? Кнопка очистки у компонента Image не поможет. Здесь дело в самом IC.

Заранее большой сенька перемяча!
карма: 0

0
файлы: 1code_1869.txt [4.8KB] [850]
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2007-08-30 17:21:31 ЛС | профиль | цитата
проблема в открытом файле, а не картинке сидящей в памяти
карма: 27
0
Ответов: 574
Рейтинг: 1
#3: 2007-08-30 17:33:57 ЛС | профиль | цитата
Хорошо, пусть так. А что делать, чтобы флешку извлечь можно было? Программу закрывать не годится...
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2007-08-30 17:39:34 ЛС | профиль | цитата
уничтожить FImgCtx
карма: 27
0
Ответов: 574
Рейтинг: 1
#5: 2007-08-30 17:54:55 ЛС | профиль | цитата
Dilma писал(а):
уничтожить FImgCtx


Уничтожь, пожалуйста! исправленной схемкой...
карма: 0

0
Ответов: 574
Рейтинг: 1
#6: 2007-08-30 23:59:28 ЛС | профиль | цитата
Дмитрий, я полагаю, ты знаешь ответ на вопрос. Намекни, пожалуйста, как его решить!
карма: 0

0
Ответов: 2125
Рейтинг: 159
#7: 2007-08-31 11:05:51 ЛС | профиль | цитата
Вообще-то процедура doLoad должна оканчиваться так:
  CloseHandle(hOK);
  FImgCtx._Release;
end;
карма: 1

0
Ответов: 574
Рейтинг: 1
#8: 2007-08-31 12:51:01 ЛС | профиль | цитата
tsdima, спасибо за ответ. Схему исправил. Не работает всё равно... Пишет, что нельзя остановить устройство. Всё, как и до твоего ответа. Проверьте схему:

code_1871.txt
карма: 0

0
файлы: 1code_1871.txt [4.9KB] [726]
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2007-08-31 14:12:25 ЛС | профиль | цитата
а есть уверенность, что выполнение доходит до FImgCtx._Release;

вообще организация очереди в этом месте из каких соображений сделана
карма: 27
0
Ответов: 574
Рейтинг: 1
#10: 2007-08-31 14:51:15 ЛС | профиль | цитата
Dilma писал(а):
вообще организация очереди в этом месте из каких соображений сделана


Прошу уточнить: это вопрос для кого? Для tsdima?
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2007-08-31 15:48:13 ЛС | профиль | цитата
для автора кода
карма: 27
0
Ответов: 2125
Рейтинг: 159
#12: 2007-08-31 17:20:38 ЛС | профиль | цитата
Dilma писал(а):
вообще организация очереди в этом месте из каких соображений сделана

А без неё не работает ImgCtx объект работает асинхронно, видимо создаёт окно для нотификации. Единственная проблема - если файла нет, то callback не вызывается, и выхода из цикла действительно не происходит
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2007-08-31 17:43:32 ЛС | профиль | цитата
ну а если убрать очередь и ожидание по Wait и приделать
  CloseHandle(pCls.hOK);
  pCls.FImgCtx._Release;
в конец callback это чему-то повредит?
карма: 27
0
Ответов: 2125
Рейтинг: 159
#14: 2007-08-31 19:04:05 ЛС | профиль | цитата
А фиг знает. Но в таком случае и event выкинуть можно. Кстати, файл-то закрывается, но не сразу, а через 10 секунд (по крайней мере, если файл с другого компа открывать).

Вспомнил. Без ожидания была проблема с загрузкой нескольких картинок подряд. Грузилась только последняя, т.к. предыдущие загрузки просто обрывались мгновенным запросом на следующую. А если просто ждать без обработки событий, то callback не вызывается.
карма: 1

0
Ответов: 574
Рейтинг: 1
#15: 2007-09-01 00:58:58 ЛС | профиль | цитата
Ребята! Помогите схему исправить!
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)