Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi zur laufzeit erzeugte TImage komp freisetzen! (https://www.delphipraxis.net/37414-zur-laufzeit-erzeugte-timage-komp-freisetzen.html)

ATwardz 5. Jan 2005 16:45


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:
With TImage.Create(Form1) do
  Begin
    Picture.loadfromfile('TEST.bmp');
    parent:=Form1;
    visible:=true;
  end;
Gib es vielleicht die möglichkeit alle TImage komponente freizusetzen(Problem es sind auch 3 Images dabei(mit Namen) die erhalten bleiben sollen!

Danke für Tipps

Luckie 5. Jan 2005 17:05

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.

ATwardz 5. Jan 2005 17:12

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

Christian Seehase 5. Jan 2005 17:16

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.

SirThornberry 5. Jan 2005 17:23

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

Christian Seehase 5. Jan 2005 17:25

Re: zur laufzeit erzeugte TImage komp freisetzen!
 
Moin Sir Thornberry,

Zitat:

Zitat von ATwardz
Problem es sind auch 3 Images dabei(mit Namen) die erhalten bleiben sollen!

;-)

SirThornberry 5. Jan 2005 17:26

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

Christian Seehase 5. Jan 2005 17:29

Re: zur laufzeit erzeugte TImage komp freisetzen!
 
Moin Sir Thornberry,

stimmt auch wieder :oops: :wall:

ATwardz 5. Jan 2005 17:38

Re: zur laufzeit erzeugte TImage komp freisetzen!
 
Also du meinst in etwa so ja?

Delphi-Quellcode:
    For j:=0 to Form1.ComponentCount do
    Begin
      If Form1.Components[j].Name='' then
      Form1.Components[j].Free;
    end;
Leider bekomme ich immer einen Listindex out of Bounds (25)

und zwar egalob ich
Delphi-Quellcode:
    For j:=0 to Form1.ComponentCount-1
oder
Delphi-Quellcode:
    For j:=1 to Form1.ComponentCount-1
oder
Delphi-Quellcode:
    For j:=0 to Form1.ComponentCount
oder
Delphi-Quellcode:
    For j:=1 to Form1.ComponentCount
Was mache ich falsch eigentlcih beginnt der index doch mit 0 oder etwa nicht?

:wiejetzt:

teebee 5. Jan 2005 17:46

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 21:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz