Вверх ↑
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
#1: 2009-03-21 17:51:06 ЛС | профиль | цитата
Скажите, почему такая схема:
code_2340.txt

не работает?
Проблема в IC, почему-то картинка массиву картинок не присваивается. Как это исправить?
карма: 9
0
файлы: 1code_2340.txt [1KB] [355]
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2009-03-21 17:55:02 ЛС | профиль | цитата
вместо

#pas
s[0] := ToBitmap(dt);

надо

#pas
s[0].assign(ToBitmap(dt));
карма: 27
0
Ответов: 1926
Рейтинг: 172
#3: 2009-03-21 19:28:03 ЛС | профиль | цитата
Dilma, а почему просто нельзя присваивать?
карма: 9
0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2009-03-21 21:04:24 ЛС | профиль | цитата
потому что элемент PictureStream после выполнения doLoad освобождает память, занятую картинкой и указатель на нее становится не валидным. Для этого и делается копия.
карма: 27
0
Ответов: 1926
Рейтинг: 172
#5: 2009-03-22 15:36:20 ЛС | профиль | цитата
Я попробовал сделать так: s[0]^ := ToBitmap(dt)^;
Вылетает ошибка Runtime, когда нажимаю кнопку, т.е. при вызове процедуры
procedure THiAsmClass.p;


Так делать вообще нельзя или я что-то неправильно делаю?

ps. Этот вопрос для случая, когда нет метода assign, например у PIcon.
карма: 9
0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2009-03-22 19:39:55 ЛС | профиль | цитата
3042, есть некая разница между присвоениями переменных и присвоениями объектов. Подробнее об этом можно почитать в любом источнике по ООП.

для PIcon копирование делается через присваение Handle


s[0].Handle := ToIcon(dt).Handle;
карма: 27
0
Ответов: 1926
Рейтинг: 172
#7: 2009-03-23 08:17:35 ЛС | профиль | цитата
Спасибо, Dilma
карма: 9
0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)