C# error: PerformClick();

C# error: PerformClick();

offline
  • Pridružio: 07 Dec 2015
  • Poruke: 14

Neznam kako da resim ovaj problem: postimg.org/image/cgsv0hjgh/



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 15 Maj 2009
  • Poruke: 963

Ne bi bilo lose da postavis i kod.
Izgleda da je problem sto je move i dalje na null kada pozivas performClick.

Uporedi, mozda si nesto promasio: http://pastebin.com/ZwGeLQqi



offline
  • Pridružio: 07 Dec 2015
  • Poruke: 14

Pregledao sam kod sve je tacno. Mogu da odigram 2 igre sa kompjuterom pre nego mi izbaci taj problem.
Ovde se nalazi ceo kod: codeshare.io/0SXjT

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14571
  • Gde živiš: Niš

Napisano: 16 Feb 2016 11:27

Očigledno nije sve tačno čim se baca Exception. Wink

Elem, sve funkcije (look_for_open_space, look_for_corner i look_for_win_or_block) ti pod određenim okolnostima vraćaju null. Dakle, sasvim je logično da postoji mogućnost za pojavu NullReferenceException-a. Imaš dve moguće solucije, ili ćeš da osmisliš tehniku tako da ne vraćaš null, nego da recimo vraćaš neki Button sa nekim konkretnim tekstom, a koji će na formi biti sakriven i čiju ćeš vrednost proveravati u performClick() funkciji, ili ćeš da ubaciš try+catch blokove i hendlovaćeš Exception-e. Druga solucija je naravno bolja.

Svakako, ukoliko misliš da bi sve trebalo da radi, predlog je da najpre dibaguješ aplikaciju i utvrdiš tačno gde je problem.

Dopuna: 16 Feb 2016 11:32

Sledeći savet: Nikad, ali nikad nemoj da programiraš ovako:
try {     foreach (Control c in Controls)     {          Button b = (Button)c;          b.Enabled = false;     }//end foreach  }//end try  catch { }Ovakvo hendlovanje izuzetaka je veoma pogrešno. Prividno se čini da aplikacija radi, a u pozadini se dešava ko zna šta. Mnogo je bolje i da ti aplikacija pukne, ali tako da znaš gde je pukla i da to ispraviš, a ne da izgleda kao da je sve u redu, a ponašanje je u pozadini ko zna kakvo. U redu je, u citiranom isečku koda ti neko specijalno hendlovanje izuzetka i nije neophodno, ali bolje odmah da pomenem nego da se naučiš da radiš tako.

offline
  • Pridružio: 07 Dec 2015
  • Poruke: 14

Hvala na savetima. Smile
Ja sam jos pocetnik u ovome, jel bi mogao ti da mi uradis kako ti mislis da treba sa try+catch funkcijama?

Hvala u svakom slucaju. Smile


Stavio sam sad try+catch funkciju na performClick, i sad mi funcionise lepo Smile
 try             {                 move.PerformClick();             }             catch { }

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14571
  • Gde živiš: Niš

I opet si uradio onako kako sam ti savetovao da ne radiš. Bravo! Very Happy

Ko je trenutno na forumu
 

Ukupno su 708 korisnika na forumu :: 44 registrovanih, 6 sakrivenih i 658 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Rade, A.R.Chafee.Jr., Aleksandar Tomić, aljosa7, Atomski čoban, Boris90, celik, cole77, commando nord, dac, darkangel, Drug pukovnik, Duh sa sekirom, Filip Marinković, Georgius, HrcAk47, Ilija Cvorovic, indja, Jethro, Kibice, LUDI, Markoni29, mercedesamg, mikrimaus, Misirac, Nebo_M, nenad81, nuke92, operniki, panonski mornar, pera12345, perica5, repac, royst33, ruma, theNedjeljko, vddutina, Vlada1389, vlvl, voja64, Vzor50, Wiesel092, zlatkovuka, |_MeD_|