AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Function mehrmals ausführen (For each?)

Ein Thema von DarkItachi · begonnen am 12. Jan 2010 · letzter Beitrag vom 13. Jan 2010
 
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Function mehrmals ausführen (For each?)

  Alt 13. Jan 2010, 07:14
Zitat von DarkItachi:
Viele sagen: Probieren geht über studieren:

Delphi-Quellcode:
if Listview1.SelCount> 1 then
begin
  for i := 0 to listview1.Items.Count - 1 do
   begin
   createform3:= tform3.create(self);
    if listview1.Items[i].Selected then
     begin
      createform3.Show;
      createform3.Caption:= listview1.Items[i].SubItems[1]
    end;
  end;
end;
Funktioniert fabelhaft! Danke!



Edit: Luckie... Ich finde es voll Wahnsinn wie man aus dem Kopf so ein Code zaubert...
Wenn man sowas kann, dann ist man schon gut!^^
Also wenn ich das richtig sehe hast du an dieser Stellen ein riesen Memory-Leak!

Dein "TForm3" wird x-mal (x=SelCount) erzeugt und immer der selben Variablen zugewiesen. Daher hast du hinterher keine Möglichkeit mehr die vorher erzeugten Instanzen wieder freizuggeben (die Variable "createform3" wird ja bei jedem Schleifendurchlauf überschrieben) oder überhaupt auf die erzeugten Instanzen zuzugreifen (ausser auf die die als letztes erzeugt wurde)

Besser ist es, wenn du diese Formularzeiger in einer Objektlist oder meinestwegen auch in einem Array speicherst.

[EDIT:] Eine andere Möglichkeit gäbe es noch: Erzeuge in deinem "TForm3" ein OnClose-Event und setze dort die CloseAction auf "caFree". So werden die Instanzen wenigstens freigegeben wenn der Benutzer sie schliesst. Ein Zugriff auf die anderen Instanzen, bis auf die zuletzt erzeugte, wäre allerdings wirklich nur durch Speicherung der Formzeiger in einer Liste oder einem Array möglich.

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 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