Go to Post ...your education can be interesting and even fun. If you look a little farther down the path, you WILL "use this crap", and "this crap" can even be cool if you know how to use it. - Chris Hibner [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 19-12-2006, 00:48
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by Gamer930 View Post
I'm pretty sure what you are trying to do is not possible. . .
Normally how it is a parent can't call methods of a child. I'm unsure why you would want create a parent in a child anyways because the child inherits the parent's methods. . . Depending on what you are planning on doing panels might be the way to go. The MSDN Help is a great tool for any programmer. The help section for Inheritance is at http://msdn.microsoft.com/library/de...nheritance.asp
I have been pouring through that help, especially the inheritance part. I think I finally get it: I was trying to inherit from a form that had already inherited it. In the MDI forms I was inheriting the children form the parent, then I was trying to inherit the parent form the children again. And this wouldn't work.

I might just have to go with panels. Only think I don't like about them is that hey are not as easy as form windows to arrange and close and open as you wish.

Any other suggestions?
  #2   Spotlight this post!  
Unread 19-12-2006, 22:14
fowlerm's Avatar
fowlerm fowlerm is offline
Bringing .NET to Robots
AKA: Matthew Fowler
FRC #0312 (Heatwave); FRC #1369 (Minotaur)
Team Role: Engineer
 
Join Date: Apr 2005
Rookie Year: 2001
Location: St. Petersburg, FL, USA
Posts: 78
fowlerm has a spectacular aura aboutfowlerm has a spectacular aura aboutfowlerm has a spectacular aura about
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by 6600gt View Post
Any other suggestions?
I think what you are trying to do is call a method that is a member of the Parent class from a MDI child form of class Child. If that is not what you are trying to do then disregard the rest of this post, and I'm confused.

If you are trying call a method that is on the MDI parent form, then this has nothing to do with inheritance, other than that both classes must inherit from the System.Windows.Forms.Form class. Note that the Form class has a property called MdiParent that is a reference to the instance of the Form that is the MDI container. Now, to access methods that are members of the MDI parent, you have to cast that property as whatever class it really is. From what you posted, it would be:
Code:
Parent^ myParent = dynamic_cast<Parent^>(this->MdiParent);
From there you can call methods normally:
Code:
myParent->SomeMethod();
You do not use gcnew in this case because you don't want to create a new instance of the Parent class, you just need to use the reference and cast it correctly.
  #3   Spotlight this post!  
Unread 20-12-2006, 15:58
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Thanks.

I put this in

Quote:
Main^ m = dynamic_cast<Main^>(this->MdiParent);
and I got these errors

Quote:
Form3.h(268) : error C2065: 'Main' : undeclared identifier
Form3.h(268) : error C2065: 'm' : undeclared identifier
Form3.h(268) : error C2061: syntax error : identifier 'Main'
Yeah, I did put the #include "Main.h" above.


Last edited by 6600gt : 20-12-2006 at 16:01.
  #4   Spotlight this post!  
Unread 20-12-2006, 17:46
esquared's Avatar
esquared esquared is offline
Keeps saying 3-2-1-Rush...
AKA: Angry Eric
no team (Volunteer!)
Team Role: Mascot
 
Join Date: Jan 2006
Rookie Year: 2005
Location: Boston, MA
Posts: 192
esquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond repute
Re: Visual C++ 2005 Designer

After reading through this (and your post from September about a similar type of issue), it's not readily apparent how your MDI project is set up. My first MDI project in VC++ took a lot of hours of hair pulling and coffee until I could readily pass information around.
If you would like, PM me and you can zip up & email me your project to look at. I'm assuming you've been using the free VC++ available from Microsoft's website?
  #5   Spotlight this post!  
Unread 21-12-2006, 15:47
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by esquared View Post
If you would like, PM me and you can zip up & email me your project to look at. I'm assuming you've been using the free VC++ available from Microsoft's website?
Yea. I will PM once I figure out what I am trying to do.


Quote:
I am curious to see your project setup as well. You should have a Main.h which houses the Main class declaration, and a Main.cpp for the Main class's code. You should also have a Form3.h and a Form3.cpp. You need to make sure that any code that references the Main class from the Form3 class resides in the Form3.cpp, since you can't have Main.h include Form3.h while at the same time Form3.h includes Main.h since this will cause errors.
So basically you are saying that I should put all my functions in the cpp file. I only need to really do this for the children, right? Currently, my project has everything in the header files. I was trying that but didn't know how to set it for this compiler. Thanks for the sample. This is exactly what I was looking for. When school finally ends tomorrow, I will try it out.

Last edited by 6600gt : 21-12-2006 at 15:50.
  #6   Spotlight this post!  
Unread 21-12-2006, 16:55
esquared's Avatar
esquared esquared is offline
Keeps saying 3-2-1-Rush...
AKA: Angry Eric
no team (Volunteer!)
Team Role: Mascot
 
Join Date: Jan 2006
Rookie Year: 2005
Location: Boston, MA
Posts: 192
esquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond reputeesquared has a reputation beyond repute
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by 6600gt View Post
So basically you are saying that I should put all my functions in the cpp file. I only need to really do this for the children, right? Currently, my project has everything in the header files. I was trying that but didn't know how to set it for this compiler. Thanks for the sample. This is exactly what I was looking for. When school finally ends tomorrow, I will try it out.
The short answer to your question is that function declarations should go into the header files (along with documentation of what the functions do ), and the function definitions should go in the cpp files.

The long answer is best left to some research into good programming practices, you can always start with the ubiquitous Wikipedia (http://en.wikipedia.org/wiki/Header_file) to get more information.

-Eric
  #7   Spotlight this post!  
Unread 30-12-2006, 03:15
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Thanks for all the help.

Now I have a new problem and I can't find any useful information on it.

Main^ main = dynamic_cast<Main^>(this->MdiParent);

for(count = 0; count < 10; count++)
{
number = main->serialPort1->BytesToRead; //Error
}

Quote:
An unhandled exception of type 'System.NullReferenceException' occurred in GUI Control Interface.exe

Additional information: Object reference not set to an instance of an object.
This happens when I start sending some serial data form a PIC to the comp.

Searching on the internet hasn't explained it much.
  #8   Spotlight this post!  
Unread 30-12-2006, 03:56
Tom Bottiglieri Tom Bottiglieri is offline
Registered User
FRC #0254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Jan 2004
Rookie Year: 2003
Location: San Francisco, CA
Posts: 3,186
Tom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond reputeTom Bottiglieri has a reputation beyond repute
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by 6600gt View Post
T
This happens when I start sending some serial data form a PIC to the comp.
May I ask what type of project you are working on?
  #9   Spotlight this post!  
Unread 30-12-2006, 05:32
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by Tom Bottiglieri View Post
May I ask what type of project you are working on?
It's a secret...
No, not really.

To my knowledge there is no real debugging system for the RC other than the printf statements. This program will allow you to watch 10 values(16 bit) at any given time. Each column has a list to choose form. There will be a preset of pwms, analogs, digital I/O, OI port values, etc. But there will also be some extra values, ex. X1, which when programed into the RC allows you watch any variable (16 bit or less).

Ex: x_1 = some_count = .......;

Then you select the X1 in any column and you start seeing a printf style stream of values.

Helpful when you are debugging a whole function. You can assign each variable in your function to a x_1 through x_x and watch all their values simultaneously.

The PIC is simulating an RC. (Don't have access to an RC one right now)

If I can get around to it(probably won't), the program might actually be able to control the robot using this:
(Its not done, not even close...)
Attached Thumbnails
Click image for larger version

Name:	GUI_mod.JPG
Views:	32
Size:	85.9 KB
ID:	4795  

Last edited by 6600gt : 30-12-2006 at 05:37.
  #10   Spotlight this post!  
Unread 30-12-2006, 12:05
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by 6600gt View Post
Now I have a new problem and I can't find any useful information on it.

Main^ main = dynamic_cast<Main^>(this->MdiParent);

for(count = 0; count < 10; count++)
{
number = main->serialPort1->BytesToRead; //Error
}

Fails with:
An unhandled exception of type 'System.NullReferenceException' occurred in GUI Control Interface.exe

Additional information: Object reference not set to an instance of an object.
This happens when I start sending some serial data form a PIC to the comp.

Searching on the internet hasn't explained it much.
Anyone?
  #11   Spotlight this post!  
Unread 30-12-2006, 12:25
chris31 chris31 is offline
Team 2021 Captain
AKA: Chris Davidson
FRC #2021 (FA Robotics)
Team Role: Mentor
 
Join Date: Nov 2005
Rookie Year: 2006
Location: Atlanta, GA/ Fredericksburg,VA
Posts: 949
chris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond reputechris31 has a reputation beyond repute
Send a message via AIM to chris31
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by 6600gt View Post
Anyone?
I dont know VC++ but heres my ideas. Do a try catch and see if that give you an error code that means something more.
  #12   Spotlight this post!  
Unread 30-12-2006, 13:37
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by chris31 View Post
I dont know VC++ but heres my ideas. Do a try catch and see if that give you an error code that means something more.
I kinda tried this right now, and it didn't help.

Can someone explain what it means when such an exception is thrown?

Thanks
  #13   Spotlight this post!  
Unread 30-12-2006, 15:13
Gamer930's Avatar
Gamer930 Gamer930 is offline
Team 930 and 171 Alumni
AKA: Justin
no team
Team Role: Alumni
 
Join Date: Mar 2002
Rookie Year: 2002
Location: New Berlin, WI
Posts: 388
Gamer930 is a splendid one to beholdGamer930 is a splendid one to beholdGamer930 is a splendid one to beholdGamer930 is a splendid one to beholdGamer930 is a splendid one to beholdGamer930 is a splendid one to beholdGamer930 is a splendid one to beholdGamer930 is a splendid one to behold
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by 6600gt View Post

Main^ main = dynamic_cast<Main^>(this->MdiParent);

for(count = 0; count < 10; count++)
{
number = main->serialPort1->BytesToRead; //Error
}
This could be couple things. . . The problem could be line before also. . .
Something isn't initialized and there is a NULL Pointer and you are trying to assign a NULL pointer to a data slot. .

Looking in this instance my guess is there isn't Serial Communications between the PIC and the computer, and that serialPort1 is probably NULL ??

My suggestion would be when you get a problem like this is set a breakpoint couple lines before the error and then run till it gets the breakpoint and do System Watches on the important variables and use the Step Over and Step Into to go step by step through the for loop. . . If something is null it normally comes up as something in red text or a value that you know isn't correct in the watch window.
__________________
2010 to Present, Scorekeeper/Field Power Volunteer for FRC/FTC/FLL
2005 - 2010, Team 171 College Mentor
2002 - 2005, Team 930 Student
  #14   Spotlight this post!  
Unread 30-12-2006, 18:46
Bob22341 Bob22341 is offline
Registered User
FRC #1870
 
Join Date: Jan 2006
Rookie Year: 2006
Location: Alberta
Posts: 48
Bob22341 will become famous soon enough
Re: Visual C++ 2005 Designer

Your problem comes when "child" calls "parent"

In c++ once you have included a file once, you can't do it again without causing build errors. You create a continual loop with including parent and chile again and again.

If you want to go into inheritance issues and calling parent functions you can, there is an easier way. Create another file called "parenta" and copy over all of the code from "parent" Then slightly change all of the function and class names to avoid build errors, and your almost done.

Change "child" to call "parenta" instead of "parent" and problem solved.

"parent" should include "child" which should include "parenta"

Hopefully that solves your problem
  #15   Spotlight this post!  
Unread 30-12-2006, 19:59
6600gt's Avatar
6600gt 6600gt is offline
Registered User
AKA: Lohit
FRC #0226 (Hammerhead)
Team Role: Alumni
 
Join Date: Jan 2006
Rookie Year: 2004
Location: Troy, MI
Posts: 221
6600gt is a jewel in the rough6600gt is a jewel in the rough6600gt is a jewel in the rough
Re: Visual C++ 2005 Designer

Quote:
Originally Posted by Bob22341 View Post
Your problem comes when "child" calls "parent"

In c++ once you have included a file once, you can't do it again without causing build errors. You create a continual loop with including parent and chile again and again.

If you want to go into inheritance issues and calling parent functions you can, there is an easier way. Create another file called "parenta" and copy over all of the code from "parent" Then slightly change all of the function and class names to avoid build errors, and your almost done.

Change "child" to call "parenta" instead of "parent" and problem solved.

"parent" should include "child" which should include "parenta"

Hopefully that solves your problem
This is not for the null reference exception, is it?

Thanks, anyway, but I think I got the original problem one fixed. The dynamic cast thing seems to be working. This program is already taking much longer than excepted...quite frustrating.

Again, thanks...I really need to get going on this thing.



Ok here is my function in DataView.cpp:

Quote:

Main^ main = dynamic_cast<Main^>(this->MdiParent);

for(count = 1; count < 11; count++)
{
while(main->serialPort1->BytesToRead < 1);

value = main->serialPort1->ReadByte();
value <<= 8;
value += main->serialPort1->ReadByte();

List_Select(count, value);

} // FAILS right after this if there is line after

main->done_flag = 1; //Here
main->~Main(); //Or here if the above line is commented out
System.NullReferenceException

I don't get it: I am just calling something else form the main after the ReadByte(), but I get an Null exception.

Any Ideas?

Last edited by 6600gt : 30-12-2006 at 20:06.
Closed Thread


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Visual C++ 2005 Forms 6600gt Programming 7 20-09-2006 00:05
LEGO digital designer tiffany34990 Chit-Chat 2 08-10-2005 07:13
Bridge Designer Cyberguy34000 Chit-Chat 4 13-08-2005 21:07
Graphic Designer / Animator Jay5780 Career 1 05-06-2001 20:05


All times are GMT -5. The time now is 01:31.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi