943,947 Members | Top Members by Rank

Ad:
Nov 23rd, 2004
0

Delphi Onjects

Expand Post »
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:
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mr_mooz is offline Offline
11 posts
since Oct 2004
Nov 23rd, 2004
0

Re: Delphi Onjects

try song:= new song.create;
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004
Nov 23rd, 2004
0

Re: Delphi Onjects

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????
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mr_mooz is offline Offline
11 posts
since Oct 2004
Nov 23rd, 2004
0

Re: Delphi Onjects

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.
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004
Nov 23rd, 2004
0

Re: Delphi Onjects

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....
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mr_mooz is offline Offline
11 posts
since Oct 2004
Aug 27th, 2007
0

Re: Delphi Onjects

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.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
badMF is offline Offline
3 posts
since Aug 2007
Aug 28th, 2007
0

Re: Delphi Onjects

i believe that from Oct 2004 he learned that.

anyway the intention is good.

best regards,
Reputation Points: 14
Solved Threads: 16
Junior Poster
radu84 is offline Offline
171 posts
since Dec 2006

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Pascal and Delphi Forum Timeline: mswinsocklib_tlb
Next Thread in Pascal and Delphi Forum Timeline: Open windows logon dialog





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC