Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kopieren von Recordvariablen... eigentümlicher Fehler (https://www.delphipraxis.net/72469-kopieren-von-recordvariablen-eigentuemlicher-fehler.html)

simlei 30. Jun 2006 19:09


Kopieren von Recordvariablen... eigentümlicher Fehler
 
Hallo erstmal!
Ich verzweifle. Ich habe drei Records:

Delphi-Quellcode:
TPts2d = record
    name:string;
    x,y: double;
    draw:boolean;
    radius, color:integer;
  end;

  TLines2d = record
    name: string;
    color_line, color_pts, ptradius: integer;
    pt1,pt2: TPts2d;
    draw, drawpts:boolean;
  end;

  TFlaeche2d = record
    color_region, color_line, color_pts, ptradius: integer;
    lines: array of TLines2d;
    drawpts, drawlines, drawregion: boolean;
  end;
, und ein dynamisches Array vom Typ TFlaeche:

Delphi-Quellcode:
var orig_flaechen: array of TFlaeche
Ich kopiere nun ein Element aus orig_flaechen in ein anderes Element, und verändere eines:

Delphi-Quellcode:
orig_flaechen[High(orig_flaechen)] := orig_flaechen[High(orig_flaechen)-1];
inc(orig_flaechen[High(orig_flaechen)].lines[0].pt1.x);
Im Debugger muss ich nun feststellen, dass sich die Werte von High(orig_flaechen)].lines[0].pt1.x UND High(orig_flaechen)-1].lines[0].pt1.x verändert haben!!!
Warum geschieht das so? ich greife doch eindeutig nur auf High(orig_flaechen)].lines[0].pt1.x zu!
Oder wird da irgendeine Relationalität verursacht beim kopieren? Aber das ist ja nicht der Zweck... wenn ich sage:

Delphi-Quellcode:
// ...
  var l, m: integer;
begin
  l:=3;
  m:=l;
  m:=m+3;
end;
, dann ist ja hinterher auch nicht l = 6, sondern immernoch 3...

----
==> Wäre nett, wenn jemand die Antwort und am besten auch ne Lösung wüsste und sie hier postet
MfG simlei

Hawkeye219 30. Jun 2006 19:25

Re: Kopieren von Recordvariablen... eigentümlicher Fehler
 
Hallo simlei,

du mußt beim Kopieren das Feld lines gesondert kopieren, z.B. mit Hilfe der Funktion Delphi-Referenz durchsuchenCopy. Wirf mal einen Blick in diesen Thread.

Gruß Hawkeye

simlei 30. Jun 2006 19:37

Re: Kopieren von Recordvariablen... eigentümlicher Fehler
 
Mit Copy gehts...
Warum funktioniert die einfache Zuweisung nicht?

Khabarakh 30. Jun 2006 20:02

Re: Kopieren von Recordvariablen... eigentümlicher Fehler
 
Zitat:

Zitat von simlei
Warum funktioniert die einfache Zuweisung nicht?

Weil du Hawkeyes Beitrag nicht komplett gelesen und befolgt hast :P .


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.

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