Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.06.2011, 23:12
Аватар для nattaella
nattaella nattaella вне форума
Прохожий
 
Регистрация: 10.01.2011
Сообщения: 12
Репутация: 10
Вопрос BitBtn

У меня есть два компонента BitBtn и в них загружены одинаковые рисунки.
Почему при коде
if BitBtn1.Glyph=BitBtn2.Glyph then Edit1.Text:='yes';
в edit1 ничего не появляется? Разве нельзя сравнивать рисунки?
Ответить с цитированием
  #2  
Старый 07.06.2011, 23:31
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

BitBtn.Glypth имеет тип TBitMap. Это класс. А все классы в делфе хранятся как указатели на классы. Так что фактически вы сравнили два указателя, разных.
И вообще сравнивать рисунки чтобы определить одинаковость кнопок - дело неблагородное. Лучше при загрузке например считать хеш-сумму рисунка, аля MD5, и сравнивать их.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 07.06.2011, 23:33
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Ну как бы это не совсем корректное сравнение.
Ответить с цитированием
  #4  
Старый 07.06.2011, 23:36
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Потому, что у свойства Glypth тип BitMap, у котрого есть хендлы, шмендлы и всякая служебщина, так что таким способом не вариант сравнивать

опа опоздал
Ответить с цитированием
  #5  
Старый 07.06.2011, 23:43
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

А не могли бы вы объяснить зачем вам так сравнивать конпочки
Ответить с цитированием
  #6  
Старый 08.06.2011, 11:29
Аватар для nattaella
nattaella nattaella вне форума
Прохожий
 
Регистрация: 10.01.2011
Сообщения: 12
Репутация: 10
По умолчанию

Я хочу написать игру типа "Пятнашек", в которой нужно составить 3 или 4 одинаковые картинки. И этот код проверяет это условие
Ответить с цитированием
  #7  
Старый 08.06.2011, 18:42
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

Цитата:
Сообщение от nattaella
Я хочу написать игру типа "Пятнашек", в которой нужно составить 3 или 4 одинаковые картинки. И этот код проверяет это условие

Ну это не есть лучшее решение я вам скажу, массивы вам в помощь
Ответить с цитированием
  #8  
Старый 08.06.2011, 19:24
Аватар для nattaella
nattaella nattaella вне форума
Прохожий
 
Регистрация: 10.01.2011
Сообщения: 12
Репутация: 10
По умолчанию

Код:
 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  
Старый 08.06.2011, 20:45
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

А можете полностью описать задачу или условие игры? Типа:

Имеется поле 3х3, которое состоит из................ вот что то в этом роде
Ответить с цитированием
  #10  
Старый 08.06.2011, 21:43
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Есть готовые решения.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter