AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Anfänger: Array von Objektpointern freigeben
Thema durchsuchen
Ansicht
Themen-Optionen

Anfänger: Array von Objektpointern freigeben

Ein Thema von XoRiC · begonnen am 25. Jun 2009 · letzter Beitrag vom 25. Jun 2009
 
XoRiC

Registriert seit: 20. Sep 2005
43 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Anfänger: Array von Objektpointern freigeben

  Alt 25. Jun 2009, 20:46
Hallo,

ich bin inzwischen mit Delphi ganz gut vertraut, eine Anfängerfrage hat sich jedoch bis heute hartnäckig gehalten.
Auf Google hab ich es mit dem Suchbegriff "Array von Objektpointern freigeben" (u.ä.) probiert, wurde aber nicht fündig, bzw war unschlüssig, ob der jeweils beschriebene Fall mit meinem übereinstimmt.

Mein Problem:

In einer meiner Units sei eine Objektklasse deklariert, ich nenne sie hier mal TBeispiel.
Von dieser gibt es einige Instanzen, quer über die ganze Unit verteilt.
Ich fasse temporär einige davon in einem Array zusammen.

Delphi-Quellcode:
{...}

type
  TBeispiel = class(TObject)
  private
    // ..
  end;

var
  Beispiel, Beispiel2: TBeispiel;
  MehrBeispiele: array [0..5] of TBeispiel;

procedure {...}
  var temp: array of TBeispiel;
begin
  SetLength(temp, 4);
  temp[0] := Beispiel;
  temp[1] := MehrBeispiele[0];
  temp[2] := MehrBeispiele[3];
  temp[3] := Beispiel2;
end;
Meine Frage:

Wie gebe ich nach Abarbeitung meiner Prozedur das Array temp wieder korrekt frei (die Objekte sollen dabei nicht zerstört werden)?
Ich habe hierzu schon mehrere Lösungen gesehen, einige bezogen sich aber vermutlich nur auf Arrays von einfachen Datentypen.
Welcher der folgenden Vorschläge ist für meinen Anwendungsfall der richtige?

Vorschlag 1:

SetLength(temp, 0); Vorschlag 2:

temp := nil; Reicht einer der beiden schon aus, oder ist es notwendig, zunächst alle Pointer := nil zu setzen, wie bei Vorschlag 3:

Delphi-Quellcode:
{...}
var i: integer;
{...}
for i := 0 to High(temp) do temp[i] := nil;
SetLength(temp, 0);
und Vorschlag 4:

Delphi-Quellcode:
{...}
var i: integer;
{...}
for i := 0 to High(temp) do temp[i] := nil;
temp := nil;
Ich glaub ich hab es wieder geschafft, eine einfache Frage auf 2 Din A 4 Seiten auszubreiten
Da ich aber nicht mit allen Delphi Begriffen vertraut bin, kann ich nur so sicher sein, dass man mich richtig versteht.

Vielen Dank schonmal im Voraus für eure Hilfe!
Lieben Gruß
Xoric
  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 01:03 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