![]()  | 
	
 
  | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 У меня есть два компонента BitBtn и в них загружены одинаковые рисунки.  
		
	
		
		
		
		
		
	
		
		
	
	
	Почему при коде if BitBtn1.Glyph=BitBtn2.Glyph then Edit1.Text:='yes'; в edit1 ничего не появляется? Разве нельзя сравнивать рисунки?  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 BitBtn.Glypth имеет тип TBitMap. Это класс. А все классы в делфе хранятся как указатели на классы. Так что фактически вы сравнили два указателя, разных. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	И вообще сравнивать рисунки чтобы определить одинаковость кнопок - дело неблагородное. Лучше при загрузке например считать хеш-сумму рисунка, аля MD5, и сравнивать их.  | 
| 
		 
			 
			#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.  |