![]() |
Array ändert sich von allein
Hallo allerseits.
Bei folgendem Text tritt ein kleines Problem auf, zu dem mir leider keine Lösung einfällt.
Delphi-Quellcode:
Dabei ändert sich ZugPos[nr] so wie es soll, jedoch wird dabei auch ZugPos[nr-1] verändert, sodass am Ende der prozedur beide Die gleichen Werte haben.
procedure TForm1.tausch(nr,num: integer);
var speicher: integer; //zwischenspeicher für die zu tauschende Zahl begin ZugPos[nr]:= ZugPos[nr-1]; //ZugPos ist ein Array of Array of Array[0..1] of integer speicher:= ZugPos[nr,num div 4,num mod 2]; ZugPos[nr,num div 4,num mod 2]:= ZugPos[nr,num div 4+1,num mod 2]; ZugPos[nr,num div 4+1,num mod 2]:= speicher; end; Ich hab gehört, dass durch die Übertragung der Werte ZugPos[nr]:= ZugPos[nr-1] nicht nur die Werte übergeben werden sondern auch der Speicherplatz. Damit meine ich das beide anschließend am Selben Ort gespeichert sind und somit auch die gleichen Werte haben. Ob das nun stimmt oder auch nicht kennt irgendjemand eine Lösung für das Problem? Danke |
Re: Array ändert sich von allein
Hallo,
mit der Funktion ![]()
Delphi-Quellcode:
Gruß Hawkeye
// ZugPos[nr]:= ZugPos[nr-1];
ZugPos[nr] := Copy(ZugPos[nr - 1]); |
Re: Array ändert sich von allein
Danke jetzt funktionierts. Sogar das ganze Programm läuft vernünftig.
Bekomme jetzt leider nen Stack overflow aber den krieg ich auch noch weg. Danke nochmals. |
Re: Array ändert sich von allein
ich denke es liegt daran das du da ja mit 2 dim arrays arbeitest, und da wird eben nur die Referenz kopiert und nicht das array.
Hawkeye219's lösung sagt expliziet das das array kopiert werden mus und nicht die Referenz. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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