Announcement

Collapse
No announcement yet.

Kopie einer Instanz?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kopie einer Instanz?

    Ich habe eine Klasse mit einem Array of Integers und entsprechende Methoden zur Bearbeitung des Arrays. Nun brauche ich eine exakte Kopie dieses Arrays, bzw. der Instanz. Da meine Instanz aber anscheinend nur ein Pointer ist, bringt eine simple Zuweisungsoperation reichlich wenig

    Mein Code (Beispiel):
    <PRE>
    TTestClass = class
    private
    intArray: array[0..19] of Integer;
    public
    ...
    end;

    ...

    var TestInstance: TTestClass;
    CopyOfTest: TTestClass;
    ...
    TestInstance := TTestClass.Create;
    ...
    CopyOfTest := TestInstance; // nur Kopie des Zeigers und nicht der Werte!
    </PRE>

    Für nützliche Hinweise, Quelltexte oder URLs wäre ich sehr dankbar!
    CU
    Eskayp

  • #2
    Du mußt eine Assign Methode implementieren, in der der Inhalt des Array kopiert wir

    Comment


    • #3
      Hallo Kai,<br>
      mit<br>
      TestInstance := TTestClass.Create; <br>
      CopyOfTest := TestInstance;<br>
      erhälst Du keine Kopie (siehe Frank Kneffel). Da Du aber einiges an Source weggelassen hast,<br>
      muß ich über das Urteilen, was ich sehe. Nach CopyOfText:=TestInstance steht an der Adresse von<br>
      CopyOfText eine Zeiger auf TestInstance. Somit zeigen beide auf <b>dasselbe</b> Objekt.<br>
      Daher mußt Du über CopyOfTest auf die Werte zugreifen können. Wenn Du CopyOfText<br>
      vorher mit CopyOfTest:=TTestClass.Create erzeugt hast, tritt der gleiche Effekt auf. Zusätzlich<br>
      hast du jedoch eine Speicherleiche erzeugt. Denn das mit CopyOfTest:=TTestClass.Create erzeugte<br>
      Objekt kannst Du nicht mehr freigeben, da CopyOfTest auf TestInstance zeigt.<br>
      Jens Schumann<br&gt

      Comment

      Working...
      X