![]() |
zur laufzeit erzeugte TImage komp freisetzen!
Hallo!
Habe das Problem das ich mehrer TImage Komponenten erzeuge und diese irendwann wieder freisetzen will! Das Problem Namen hab ich nicht vergeben da es in meinem Fall hinderlich ist!
Delphi-Quellcode:
Gib es vielleicht die möglichkeit alle TImage komponente freizusetzen(Problem es sind auch 3 Images dabei(mit Namen) die erhalten bleiben sollen!
With TImage.Create(Form1) do
Begin Picture.loadfromfile('TEST.bmp'); parent:=Form1; visible:=true; end; Danke für Tipps |
Re: zur laufzeit erzeugte TImage komp freisetzen!
Warum ist es hinderlich die Namen-Property zu belegen? Falls du deine TImages nicht in einem globalen Array verwaltest, könntest du mit FindComponent arbeiten, allerdings brauchst du dann einen eindeutigen Namen.
|
Re: zur laufzeit erzeugte TImage komp freisetzen!
Kann man irgenwie eine Komponente aus einem zusammengestzen name ansprechen?
Also zum
Delphi-Quellcode:
?
Beispiel Findkomponent(intostr(x)+Inttostr(y))
Das wäre dann eine Lösung! Jan |
Re: zur laufzeit erzeugte TImage komp freisetzen!
Moin Jan,
klar geht. Du müsstest halt den Namen beim Erzeugen auch vergeben. Allerdings musst der Name mit einem Buchstaben oder _ beginnen. |
Re: zur laufzeit erzeugte TImage komp freisetzen!
du könntest mit Components auch alle Componenten durchgehen und prüfen ob es ein TImage ist. Wenn es ein TImage ist könntest du noch prüfen ob der Name leer ist. Und wenn der Name leer ist dann kannst du die Kompo freigeben
|
Re: zur laufzeit erzeugte TImage komp freisetzen!
Moin Sir Thornberry,
Zitat:
|
Re: zur laufzeit erzeugte TImage komp freisetzen!
@christian: ich weiß, deswegen hab ich ja auch geschrieben das er alle images durchgehen soll und nur die freigeben wo KEIN Name vergeben ist
|
Re: zur laufzeit erzeugte TImage komp freisetzen!
Moin Sir Thornberry,
stimmt auch wieder :oops: :wall: |
Re: zur laufzeit erzeugte TImage komp freisetzen!
Also du meinst in etwa so ja?
Delphi-Quellcode:
Leider bekomme ich immer einen Listindex out of Bounds (25)
For j:=0 to Form1.ComponentCount do
Begin If Form1.Components[j].Name='' then Form1.Components[j].Free; end; und zwar egalob ich
Delphi-Quellcode:
oder
For j:=0 to Form1.ComponentCount-1
Delphi-Quellcode:
oder
For j:=1 to Form1.ComponentCount-1
Delphi-Quellcode:
oder
For j:=0 to Form1.ComponentCount
Delphi-Quellcode:
Was mache ich falsch eigentlcih beginnt der index doch mit 0 oder etwa nicht?
For j:=1 to Form1.ComponentCount
:wiejetzt: |
Re: zur laufzeit erzeugte TImage komp freisetzen!
Von 0 bis ComponentCount-1 stimmt eigentlich schon. Das Problem ist nur, wenn Du während der Schleife eine Komponente freigibst, stimmt der Schleifen-Endwert narürlich nicht mehr. Du solltest daher statt einer For-Schleife eine While-Schleife nehmen.
Abgesehen davon ist es kein guter Programmierstil ohne Referenzvariable zu arbeiten, wenn Du Dein Objekt nicht unmittelbar wieder freigeben willst. Merk Dir das Image einfach und gib es dann über die Referenz frei. Gruß, teebee |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz