Delphi Onjects

Reply

Join Date: Oct 2004
Posts: 11
Reputation: mr_mooz is an unknown quantity at this point 
Solved Threads: 0
mr_mooz mr_mooz is offline Offline
Newbie Poster

Delphi Onjects

 
0
  #1
Nov 23rd, 2004
Hi I have a delphi object to store some music information (note, start time, duratrion...) problem is I always get memory addressing error when I run the code,can someone please tell me where I'm going wrong!

I declare it in a seperate unit, with all my other declerations as follows:

type
SongClass = class
public
//Properties of SongClass

title : String; // Song title for user reference
tempo : integer; //tempo of the song
top : integer;
track : array[1..max_notes] of rNote; //musical data that is the song.

//Methods of SongClass
procedure addNote(inNote : rNote);
procedure sortSong;
constructor create;


end;

When it crashes it ends up with an acces violation.

It wont let me assign a value to any of the properties. I dont want it complicated, I know its kinda simple but it has to be!

I declare the variable just after the decleration of the class, its literally the next line of code:


var
song : songClass;


And when in the other forms I can see song as a variable with all the methods and properties I have made.


I have filled out the methods in rough but none of them do anything and it crashes before they can run anyway.

I do this to set up the object, even tho the constructor is empty:

procedure TForm1.FormCreate(Sender: TObject);
begin
song := song.create;
end;


If i put anything in the constructor, like top :=0; then it crashes there with the access violation!


Have i missed anything really simple out???


Thanks for any help anyone can give me! Its driving me mad!


JOsh :lol:
Reply With Quote Quick reply to this message  
Join Date: Nov 2004
Posts: 6,143
Reputation: jwenting is just really nice jwenting is just really nice jwenting is just really nice jwenting is just really nice 
Solved Threads: 213
Team Colleague
jwenting's Avatar
jwenting jwenting is offline Offline
duckman

Re: Delphi Onjects

 
0
  #2
Nov 23rd, 2004
try song:= new song.create;
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 11
Reputation: mr_mooz is an unknown quantity at this point 
Solved Threads: 0
mr_mooz mr_mooz is offline Offline
Newbie Poster

Re: Delphi Onjects

 
0
  #3
Nov 23rd, 2004
I tried that and it still wont work! thanks any way!


Ive tried compiling it in delphi 8 as in 6 it didnt give any error msg. Now it says an inherited constructor must be called. but i dont use inheritance! i would if i was doing a component but i thought this should be a stand alone class, in it own right.


Is there some default thing i can inherit from prehaps????
Reply With Quote Quick reply to this message  
Join Date: Nov 2004
Posts: 6,143
Reputation: jwenting is just really nice jwenting is just really nice jwenting is just really nice jwenting is just really nice 
Solved Threads: 213
Team Colleague
jwenting's Avatar
jwenting jwenting is offline Offline
duckman

Re: Delphi Onjects

 
0
  #4
Nov 23rd, 2004
what does your constructor look like?
In it you should call the superclass constructor if I'm not mistaken (been a while since I've used Delphi...).
Every class you create inherits from TObject if memory serves...

If you don't want a dynamic object, don't call create. Create creates a new object of the class on the heap.
Reply With Quote Quick reply to this message  
Join Date: Oct 2004
Posts: 11
Reputation: mr_mooz is an unknown quantity at this point 
Solved Threads: 0
mr_mooz mr_mooz is offline Offline
Newbie Poster

Re: Delphi Onjects

 
0
  #5
Nov 23rd, 2004
I found out what i did wrong.


I needed to do a line

inherit Create;

and when i called the constructor it should of been

song := songClass.Create;

Hope that helps someone if they ever get stuck with this!
Thanks for you help guys!


And sorry, I did mean object, not onjects. They're something completely different....
Reply With Quote Quick reply to this message  
Join Date: Aug 2007
Posts: 3
Reputation: badMF is an unknown quantity at this point 
Solved Threads: 0
badMF badMF is offline Offline
Newbie Poster

Re: Delphi Onjects

 
0
  #6
Aug 27th, 2007
The only problem was that you used

song := song.Create; and the right way is

song := songClass.Create;

You don't have to write the inherit create.

If you want to do some special things in constructor then you MUST write something like this

Pascal and Delphi Syntax (Toggle Plain Text)
  1. type
  2. SongClass = class(TObject)
  3. private
  4. //Properties of SongClass
  5.  
  6. public
  7. //Methods of SongClass
  8. constructor Create; override;
  9.  
  10. end;
  11.  
  12. implementation
  13.  
  14.  
  15. constructor SongClass.Create;
  16. begin
  17. inherited Create;
  18. //any initialization or whatever you want
  19. end;
  20.  
  21. end.

I hope that will be helpful
Last edited by badMF; Aug 27th, 2007 at 7:03 am.
Reply With Quote Quick reply to this message  
Join Date: Dec 2006
Posts: 171
Reputation: radu84 is an unknown quantity at this point 
Solved Threads: 16
radu84 radu84 is offline Offline
Junior Poster

Re: Delphi Onjects

 
0
  #7
Aug 28th, 2007
i believe that from Oct 2004 he learned that.

anyway the intention is good.

best regards,
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the Pascal and Delphi Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC