Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Managed C++/CLI
  4. Error with 'System.NullReferenceException' [modified]

Error with 'System.NullReferenceException' [modified]

Scheduled Pinned Locked Moved Managed C++/CLI
graphicshelpquestion
12 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    thesad
    wrote on last edited by
    #1

    I had written : for(int i=0; i <10; i++){ em[i]->pct = (gcnew System::Windows::Forms::PictureBox()); em[i]->pct->Location = System::Drawing::Point(250, 250); em[i]->pct->Visible = true; em[i]->pct->Size = System::Drawing::Size(50, 50); } And I got this error :

    An unhandled exception of type 'System.NullReferenceException' occurred in Little tanks.exe

    Additional information: Object reference not set to an instance of an object.

    at this line : em[i]->pct = (gcnew System::Windows::Forms::PictureBox()); what did I do wrong?

    N C 2 Replies Last reply
    0
    • T thesad

      I had written : for(int i=0; i <10; i++){ em[i]->pct = (gcnew System::Windows::Forms::PictureBox()); em[i]->pct->Location = System::Drawing::Point(250, 250); em[i]->pct->Visible = true; em[i]->pct->Size = System::Drawing::Size(50, 50); } And I got this error :

      An unhandled exception of type 'System.NullReferenceException' occurred in Little tanks.exe

      Additional information: Object reference not set to an instance of an object.

      at this line : em[i]->pct = (gcnew System::Windows::Forms::PictureBox()); what did I do wrong?

      N Offline
      N Offline
      Newbie00
      wrote on last edited by
      #2

      How have you defined the em array?

      1 Reply Last reply
      0
      • T thesad

        I had written : for(int i=0; i <10; i++){ em[i]->pct = (gcnew System::Windows::Forms::PictureBox()); em[i]->pct->Location = System::Drawing::Point(250, 250); em[i]->pct->Visible = true; em[i]->pct->Size = System::Drawing::Size(50, 50); } And I got this error :

        An unhandled exception of type 'System.NullReferenceException' occurred in Little tanks.exe

        Additional information: Object reference not set to an instance of an object.

        at this line : em[i]->pct = (gcnew System::Windows::Forms::PictureBox()); what did I do wrong?

        C Offline
        C Offline
        Christian Graus
        wrote on last edited by
        #3

        em[i] is null, you probably created an array and didn't create the objects in it

        Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )

        T 1 Reply Last reply
        0
        • C Christian Graus

          em[i] is null, you probably created an array and didn't create the objects in it

          Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )

          T Offline
          T Offline
          thesad
          wrote on last edited by
          #4

          the em array defined so : static array^ em; and tank is structure : ref struct tank { int step_x, step_y; System::Windows::Forms::PictureBox^ pct; }; What do you mean saying to create objects for array?:)

          P C 2 Replies Last reply
          0
          • T thesad

            the em array defined so : static array^ em; and tank is structure : ref struct tank { int step_x, step_y; System::Windows::Forms::PictureBox^ pct; }; What do you mean saying to create objects for array?:)

            P Offline
            P Offline
            prasad_som
            wrote on last edited by
            #5

            thesad wrote:

            static array^ em;

            You have not initialized array here. Array can be initialized as given in MSDN example.

            array<MyClass ^> ^ MyArray = gcnew array<MyClass ^>(100);

            Prasad Notifier using ATL | Operator new[],delete[][^]

            T 1 Reply Last reply
            0
            • P prasad_som

              thesad wrote:

              static array^ em;

              You have not initialized array here. Array can be initialized as given in MSDN example.

              array<MyClass ^> ^ MyArray = gcnew array<MyClass ^>(100);

              Prasad Notifier using ATL | Operator new[],delete[][^]

              T Offline
              T Offline
              thesad
              wrote on last edited by
              #6

              I wrote taht you had sad, but still at same line is that error

              P 1 Reply Last reply
              0
              • T thesad

                I wrote taht you had sad, but still at same line is that error

                P Offline
                P Offline
                prasad_som
                wrote on last edited by
                #7

                Would interesting to see, how you have done that. There are two possiblitites, 1. You have not allocated memory for it. 2. You are accessing invalid index.

                Prasad Notifier using ATL | Operator new[],delete[][^]

                T 1 Reply Last reply
                0
                • P prasad_som

                  Would interesting to see, how you have done that. There are two possiblitites, 1. You have not allocated memory for it. 2. You are accessing invalid index.

                  Prasad Notifier using ATL | Operator new[],delete[][^]

                  T Offline
                  T Offline
                  thesad
                  wrote on last edited by
                  #8

                  Here is all code : #pragma once namespace Littletanks { ref struct tank { int step_x, step_y; System::Windows::Forms::PictureBox^ pct; }; using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; public ref class wnd_main : public System::Windows::Forms::Form { public: wnd_main(void) { InitializeComponent(); } protected: ~wnd_main() { if (components) delete components; } private: System::ComponentModel::IContainer^ components; private: int max_x, max_y, min_x, min_y; private: tank usr, b_usr; private: static array^ em; private: static array^ b_em; #pragma region Windows Form Designer generated code void InitializeComponent(void) { this->components = (gcnew System::ComponentModel::Container()); this->usr.pct = (gcnew System::Windows::Forms::PictureBox()); this->b_usr.pct = (gcnew System::Windows::Forms::PictureBox()); this->SuspendLayout(); // // pct_usr // this->usr.pct->Location = System::Drawing::Point(235, 391); this->usr.pct->Size = System::Drawing::Size(50, 50); this->usr.pct->TabStop = false; // // pct_em // array^ em = gcnew array(10); array^ b_em = gcnew array(10); for(int i=0; i <10; i++){ this->em[i]->pct = gcnew System::Windows::Forms::PictureBox(); this->em[i]->pct->Location = System::Drawing::Point(250, 250); this->em[i]->pct->Visible = true; this->em[i]->pct->Size = System::Drawing::Size(50, 50); this->b_em[i]->pct = gcnew System::Windows::Forms::PictureBox(); this->b_em[i]->pct->Load("b_em[i]->jpg"); this->b_em[i]->pct->Location = System::Drawing::Point(13, 64); this->b_em[i]->pct->Size = System::Drawing::Size(5, 5); this->b_em[i]->pct->Visible = false; this->Controls->Add(this->b_em[i]->pct); this->Controls->Add(this->em[i]->pct); } this->b_usr.pct->Load("b_usr.jpg"); this->b_usr.pct->Location = System::Drawing::Point(97, 142); this->b_usr.pct->Size = System::Drawing::Size(5, 5); this->b_usr.pct->Visible = false; // wnd_main // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->BackColor = System::Drawing::SystemColors::Window; this->ClientSize = System::Drawin

                  P 1 Reply Last reply
                  0
                  • T thesad

                    Here is all code : #pragma once namespace Littletanks { ref struct tank { int step_x, step_y; System::Windows::Forms::PictureBox^ pct; }; using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; public ref class wnd_main : public System::Windows::Forms::Form { public: wnd_main(void) { InitializeComponent(); } protected: ~wnd_main() { if (components) delete components; } private: System::ComponentModel::IContainer^ components; private: int max_x, max_y, min_x, min_y; private: tank usr, b_usr; private: static array^ em; private: static array^ b_em; #pragma region Windows Form Designer generated code void InitializeComponent(void) { this->components = (gcnew System::ComponentModel::Container()); this->usr.pct = (gcnew System::Windows::Forms::PictureBox()); this->b_usr.pct = (gcnew System::Windows::Forms::PictureBox()); this->SuspendLayout(); // // pct_usr // this->usr.pct->Location = System::Drawing::Point(235, 391); this->usr.pct->Size = System::Drawing::Size(50, 50); this->usr.pct->TabStop = false; // // pct_em // array^ em = gcnew array(10); array^ b_em = gcnew array(10); for(int i=0; i <10; i++){ this->em[i]->pct = gcnew System::Windows::Forms::PictureBox(); this->em[i]->pct->Location = System::Drawing::Point(250, 250); this->em[i]->pct->Visible = true; this->em[i]->pct->Size = System::Drawing::Size(50, 50); this->b_em[i]->pct = gcnew System::Windows::Forms::PictureBox(); this->b_em[i]->pct->Load("b_em[i]->jpg"); this->b_em[i]->pct->Location = System::Drawing::Point(13, 64); this->b_em[i]->pct->Size = System::Drawing::Size(5, 5); this->b_em[i]->pct->Visible = false; this->Controls->Add(this->b_em[i]->pct); this->Controls->Add(this->em[i]->pct); } this->b_usr.pct->Load("b_usr.jpg"); this->b_usr.pct->Location = System::Drawing::Point(97, 142); this->b_usr.pct->Size = System::Drawing::Size(5, 5); this->b_usr.pct->Visible = false; // wnd_main // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->BackColor = System::Drawing::SystemColors::Window; this->ClientSize = System::Drawin

                    P Offline
                    P Offline
                    prasad_som
                    wrote on last edited by
                    #9

                    Here, you had made couple of mistakes,

                    thesad wrote:

                    array^ em = gcnew array(10); array^ b_em = gcnew array(10);

                    Here, again you are defining local variables. It should be like this,

                    this->em = gcnew array<tank^>(10);
                    this->b_em = gcnew array<tank^>(10);

                    Again, simply defining array doesn't initializes its members, you need to allocate tank variable for each index. So, your code can be modified like this,

                    thesad wrote:

                    for(int i=0; i <10; i++){ this->em[i]->pct = gcnew System::Windows::Forms::PictureBox(); this->em[i]->pct->Location = System::Drawing::Point(250, 250);

                    Modify this to,

                    for(int i=0; i <10; i++){
                    em[i] = gcnew tank;//create tank object for each index
                    this->em[i]->pct = gcnew System::Windows::Forms::PictureBox();
                    this->em[i]->pct->Location = System::Drawing::Point(250, 250);
                    //your code follows

                    Prasad Notifier using ATL | Operator new[],delete[][^]

                    T 1 Reply Last reply
                    0
                    • P prasad_som

                      Here, you had made couple of mistakes,

                      thesad wrote:

                      array^ em = gcnew array(10); array^ b_em = gcnew array(10);

                      Here, again you are defining local variables. It should be like this,

                      this->em = gcnew array<tank^>(10);
                      this->b_em = gcnew array<tank^>(10);

                      Again, simply defining array doesn't initializes its members, you need to allocate tank variable for each index. So, your code can be modified like this,

                      thesad wrote:

                      for(int i=0; i <10; i++){ this->em[i]->pct = gcnew System::Windows::Forms::PictureBox(); this->em[i]->pct->Location = System::Drawing::Point(250, 250);

                      Modify this to,

                      for(int i=0; i <10; i++){
                      em[i] = gcnew tank;//create tank object for each index
                      this->em[i]->pct = gcnew System::Windows::Forms::PictureBox();
                      this->em[i]->pct->Location = System::Drawing::Point(250, 250);
                      //your code follows

                      Prasad Notifier using ATL | Operator new[],delete[][^]

                      T Offline
                      T Offline
                      thesad
                      wrote on last edited by
                      #10

                      thank you for your help :)

                      1 Reply Last reply
                      0
                      • T thesad

                        the em array defined so : static array^ em; and tank is structure : ref struct tank { int step_x, step_y; System::Windows::Forms::PictureBox^ pct; }; What do you mean saying to create objects for array?:)

                        C Offline
                        C Offline
                        Christian Graus
                        wrote on last edited by
                        #11

                        = new gcnew tank(); to create the actual objects in the array. where x is the index into the array ( you'd probably do this in a loop )

                        Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )

                        P 1 Reply Last reply
                        0
                        • C Christian Graus

                          = new gcnew tank(); to create the actual objects in the array. where x is the index into the array ( you'd probably do this in a loop )

                          Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )

                          P Offline
                          P Offline
                          prasad_som
                          wrote on last edited by
                          #12

                          Christian Graus wrote:

                          = new gcnew tank();

                          Typo. :)

                          Prasad Notifier using ATL | Operator new[],delete[][^]

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups