Thema: Delphi Kopie einer Instanz

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Kopie einer Instanz

  Alt 29. Dez 2004, 17:36
Moin!

Deine Vermutung ist richtig - du hast nach der Zuweisung 2 Variablen die beide auf ein und dieselbe Instanz verweisen. Daher ist ein Free bei einer der Variablen gleichzeitig der Tod der anderen Variable - sie zeigt ja auf die gleiche Stelle.

Um eine Instanz ordentlich zu kopieren solltest du dir einen Copy Constructor anlegen - also ein Konstruktor der als Parameter eine Instanz gleichen Typs annimmt und dann darin alle Daten kopiert.

Beispiel:
Delphi-Quellcode:
Type
  TBeispiel = Class
  Private
    fDaten : Integer;
    fAnderes : String;

  Public
    Constructor Create; Overload;
    Constructor Create(ABeispiel : TBeispiel); Overload;
  End;

....

Constructor TBeispiel.Create(ABeispiel : TBeispiel);
Begin
  Inherited Create; // muss man nicht, ich weiss, ich mach's trotzdem

  fDaten := ABeispiel.fDaten;
  fAnderes := ABeispiel.fAnderes;
End;
MfG
Muetze1
  Mit Zitat antworten Zitat