AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array ändert sich von allein

Ein Thema von peter314 · begonnen am 27. Mai 2009 · letzter Beitrag vom 28. Mai 2009
Antwort Antwort
peter314

Registriert seit: 3. Dez 2008
22 Beiträge
 
#1

Array ändert sich von allein

  Alt 27. Mai 2009, 21:10
Hallo allerseits.

Bei folgendem Text tritt ein kleines Problem auf, zu dem mir leider keine Lösung einfällt.
Delphi-Quellcode:
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;
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.

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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Array ändert sich von allein

  Alt 27. Mai 2009, 21:34
Hallo,

mit der Funktion Delphi-Referenz durchsuchenCopy kann man eindeutige Kopien anlegen:

Delphi-Quellcode:
// ZugPos[nr]:= ZugPos[nr-1];
ZugPos[nr] := Copy(ZugPos[nr - 1]);
Gruß Hawkeye
  Mit Zitat antworten Zitat
peter314

Registriert seit: 3. Dez 2008
22 Beiträge
 
#3

Re: Array ändert sich von allein

  Alt 27. Mai 2009, 21:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Array ändert sich von allein

  Alt 28. Mai 2009, 07:07
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.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:39 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