|
#1
|
||||
|
||||
BitBtn
У меня есть два компонента BitBtn и в них загружены одинаковые рисунки.
Почему при коде if BitBtn1.Glyph=BitBtn2.Glyph then Edit1.Text:='yes'; в edit1 ничего не появляется? Разве нельзя сравнивать рисунки? |
#2
|
||||
|
||||
BitBtn.Glypth имеет тип TBitMap. Это класс. А все классы в делфе хранятся как указатели на классы. Так что фактически вы сравнили два указателя, разных.
И вообще сравнивать рисунки чтобы определить одинаковость кнопок - дело неблагородное. Лучше при загрузке например считать хеш-сумму рисунка, аля MD5, и сравнивать их. jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
Ну как бы это не совсем корректное сравнение.
|
#4
|
||||
|
||||
Потому, что у свойства Glypth тип BitMap, у котрого есть хендлы, шмендлы и всякая служебщина, так что таким способом не вариант сравнивать
опа опоздал |
#5
|
||||
|
||||
А не могли бы вы объяснить зачем вам так сравнивать конпочки
|
#6
|
||||
|
||||
Я хочу написать игру типа "Пятнашек", в которой нужно составить 3 или 4 одинаковые картинки. И этот код проверяет это условие
|
#7
|
||||
|
||||
Цитата:
Ну это не есть лучшее решение я вам скажу, массивы вам в помощь |
#8
|
||||
|
||||
Код:
if BitBtn1.Glyph=BitBtn2.Glyph then Edit1.Text:='yes'; я написала для примера, а так я уже организовала проверку с циклом: for j:=0 to 3 do begin for i:=0 to 2 do begin if (ArBB[0+i+5*j].Glyph=ArBB[1+i+5*j].Glyph) and (ArBB[1+i+5*j].Glyph=ArBB[2+i+5*j].Glyph) then edit1.Text:='yes'; у меня 20 компонентов BitBtn и все они занесены в массив типа TBitBtn - ArBB. Последний раз редактировалось Admin, 08.06.2011 в 20:58. |
#9
|
||||
|
||||
А можете полностью описать задачу или условие игры? Типа:
Имеется поле 3х3, которое состоит из................ вот что то в этом роде |
#10
|
||||
|
||||
Есть готовые решения.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |