Δημιουργια δυναμικου πίνακα με αντικειμενα..

Συζητήσεις για τις γλώσσες του dot Net και για του Visual Studio της Microsoft

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
routeras
Δημοσιεύσεις: 6
Εγγραφή: 18 Ιούλ 2010 01:16

Δημιουργια δυναμικου πίνακα με αντικειμενα..

Δημοσίευση από routeras » 12 Αύγ 2010 17:23

Παιδια καλησπερα...εχω ενα προβληκα κ λιγο εχω κολήσει σε ενα σημειο δεν ξερω πως θα γινει...δεν μ ερχεται τουλατιχστον...

θελω να κανω εναν δυνανικο πινακα και να δημιουργω αντικειμενα πχ Buttons..αλλα θελω να τα μετακινω πανω στην φορμα...

κανει λοιπον μια κλαση(.h) :

class C
{
public:
TImage *terminal1;
int val;

};

και μετά στο .cpp εχω φτιάξει αυτό:

Δηλώνω: C *test[10];

και :

void __fastcall Form1::Button1click(TObject *Sender)
{
test = new C;

test->val = i;

test->terminal1 = new TImage(this);
test->terminal1->Top = 314;
test->terminal1->Left = 496;
test->terminal1->Parent = this;
test->terminal1->Picture->LoadFromFile("h:\\Ptyxiakh\\stuff\\Computer.jpg");
test->terminal1->OnMouseDown = Form4->mousedown;
test->terminal1->OnMouseMove = Form4->mousemove;
test->terminal1->OnMouseUp = Form4->mouseup;
test[i]->terminal1->PopupMenu=Form4->PopupMenu1;


i++;
}


οπως βλεπετε εχω κανει κ 3 συμβάντα...

ομως μεσα σε αυτα όπου καλω κ το

test[i]->terminal->Top ....

για παραδειγμα

void __fastcall Form1::mousemove( .... ,int X,int Y)
{
test[i]->terminal1->Top = test[i]->terminal1->Top + ( Y - currentY);
test[i]->terminal1->Left = test[i]->terminal1->Left + ( X - currentX);

}
με χτυπαει λαθος γιατι μαλλον δεν παιρνει τιμή το i .. η κατι δεν εκχωρειται σωστά...μηπως μπορει να με βοηθησει καποιος....?

ή αν υπάρχει καποιος πιο εύκολος τροπος για να μην κανω τόσα πραγματα..απλα αν γινεται με καποιο παράδειγμα..ευχαριστώ προκαταβολικα.

το i το έχω δηλώσει καθολικό. το βλεπουν ολοι λογικά ..

Άβαταρ μέλους
soteres2002
S. & H. Moderator
Δημοσιεύσεις: 1524
Εγγραφή: 05 Μαρ 2004 22:17
Τοποθεσία: Ιωάννινα

Δημιουργια δυναμικου πίνακα με αντικειμενα..

Δημοσίευση από soteres2002 » 13 Αύγ 2010 18:08

Η αρχικοποίησή σου είναι λάθος, συγκεκριμένα στο C... Κατ αρχάς αν θες να έχεις δυναμικό πίνακα πχ ενός αντικειμένου τύπου Button, με αρχικό capacity 100, πρέπει να κάνεις το εξής:

Κώδικας: Επιλογή όλων

Button *items;

...

items = new Button[100];
...και όχι αρχικοποιηση ένα-ένα τα στοιχεία του πίνακα που δήλωσες ακριβώς πριν στατικά...

Τώρα σου χτυπάει λάθος γιατί όταν δηλωνεις το C αυτό περιέχει σκουπίδια, και άρα τα C είναι non-valid addresses, επομένως όταν πας να κάνεις dereference το ι-στό στοιχείο του διανύσματος αυτού είναι λογικό να σου χτυπάει core.

Απάντηση

Επιστροφή στο “dot Net και Visual Studio”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες