Sprawdzanie zawarości obiektu

0

Witam, chciałbym sprawdzić czy jest na danym obiekcie obrazek jak nie to wkleić inny (standardowo program na początku wkleja obrazek pt. "nic.jpg", ale pętla dzieje się w nieskończoność, nie wiem czemu. Nie jestem pewien czy tak się sprawdza ten warunek. Pomocy ;)

 
while(1)
{
     int liczba = ((rand() % 9 ) + 1);
     if (liczba==1)
     {
     if (Form1->Pole1->Picture == "img/nic.bmp")
     {
           Form1->Pole1->Picture->LoadFromFile("img/x.bmp");
           kto='o';
           break;
           }
           }
2

Porównujesz wskaźniki (Picture i c-string), więc nie dziwota, że if się nie wykonuje.

Form1->Pole1->Picture == "img/nic.bmp"
2

if(Form1->Pole1->Picture->Height>0) - obrazek nie wie co do niego załadowano.
Możesz do tego celu wykorzystać - Tag

if(Form1->Pole1->Tag==0)
  {
   Form1->Pole1->Picture->LoadFromFile("img/x.bmp");
   Form1->Pole1->Tag=1;
  }

Poza tym załaduj obrazki do pola klasy:

const char *fileNames[3]={"img/nic.bmp","img/x.bmp","img/o.bmp"};
TBitmap *img[3];
TImage *tb[3][3];
...
for(int i=0;i<3;++i) (img[i]=new TBitmap())->LoadFromFile(fileNames[i]);
for(int i=0,y=0;y<3;++y) for(int x=0;x<3;++x) tb[y][x]=(TImage*)FindComponent("Pole"+IntToStr(++i))

Teraz powyższy if będzie wyglądać:

if(tb[y][x]->Tag==0) tb[y][x]->Picture->Assign(img[tb[y][x]->Tag=1]);

1 użytkowników online, w tym zalogowanych: 0, gości: 1