Hallo !
Ich habe folgendes Problem:
Ich habe eine Routine, die dynamisch recht viele kompos erzeugt. das sind unter anderem panels auf denen images liegen. Um diese images mit neuen bilder zu laden muss ich blöderweise die images erst freigeben und dann neu erstellen. da ich ein verschwinden und dann wieder neu erscheien der kompos vermeiden will, habe ich mir gedacht, ich lege erst ein array mit den alten kompos an, erstelle dann die neuen drüber, und nehme dann die alten kompos aus dem array und lösche sie.
so weit so schlecht: mein code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var compoloop:integer; old_compos : Array of Tcomponent;
for compoloop := 0 to componentcount - 1 do begin if TComponent(components[compoloop]).tag = 1 then begin setlength (old_compos,length (old_compos)+1); old_compos[high(old_compos)] := TComponent(components[compoloop]); end; end; |
dieser code lädt alle "alten" kompos in das array. löschen will ich die dann mit:
Delphi-Quelltext
1: 2: 3:
| for compoloop := 0 to length(old_compos)-1 do begin TComponent (old_compos[compoloop]).free; end; |
Da löscht er aber nur die erste Kompo und bringt dann ne Zugriffsverletztung.
Was habe ich denn da verbockt ??
In the beginning was the word.
And the word was content-type: text/plain.