Abstract Error & TImage
-
Hi !
Ich habe im verlauf eines Programs einige Biler über new TImage erzeugt die ich apäter gerne wieder loswerden möchte, um den Speicher Freizugeben und evtl. später TImages mit gleichem Namen wieder erzeugen zu können. Ich habe das schon mit
for (int i=0;i<10;i++) { delete Img[i]; }versucht aber bekomme dann immer einen "Abstract Error"...
-
Wie erzeugst Du die genau?
Wie kommen die in Dein Array? Kommen die da rein?
-
In Unit1.h habe ich :
public: TImage *Img[100];und in Unit1.cpp :
for (int i=0;i<sphere[nr].Count;i++) { Form1->Img[i] = new TImage(Form1); Form1->Img[i]->Tag = i; Form1->Img[i]->Parent=Form1; Form1->Img[i]->Stretch=true; Form1->Img[i]->Picture->LoadFromFile(ExtractFilePath(Application->ExeName)+"Icons\\"+sphere[nr].Item[i].Icon); }
-
Wie oft laeuft die Schleife denn durch?
-
In der Regel 6mal.
-
Hallo
schon wieder? na schön :
man darf nicht irgendetwas löschen, ohne sicherzustellen, das auch eine Instanz dort vorhanden ist.
Setzte mal am Anfang deines Programms vor dem Erstellen der Objekte in dem Array alle Werte des Arrays auf NULL, das sollte deinen Fehler erstmal beheben.
Besser wäre es aber auf ein dynamisches Array wir TImageList, DynamicArray oder vector auszuweichen.
Dazu gibt es bereits einige Threads.bis bald
akari
-
Cool ! Jetzt kommt kein Fehler mehr... allerdings habe ich auch nicht das Gefühl das Speicher freigegeben wird - jedenfalls steigt der Speicherbedarf kontinuierlich....
-
Hallo
also mit fällt auf, das dein Array 100 Felder groß ist, deine Löschschleife aber von 0 - 10 geht. Vielleicht solltest du die Schleife auf 100 ausdehnen?
Ansonsten sei dir dringend ein dynamisches Array empfohlen.bis bald
akari