Autor Beitrag
personX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 19

WIN 2000
Delphi 2006
BeitragVerfasst: Fr 27.10.06 17:33 
Hallo,
ich habe 2 dynamische 2-dimensionale Arrays deklariert und initialisiert.
Mit dem ersten soll gearbeitet werden, d.h. Werte werden gelöscht und neu zugewiesen.
Danach soll es durch Zuweisung mit dem zweiten Array wieder wie am Anfang aussehen, sodass damit erneut gearbeitet werden kann.
z.B.:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
type DynamicArray = array of array of string;

var MyArray1,MyArray2:DynamicArray;

procedure DoSomething();
begin

  // Initialisierung ...
 
  // Das zweite Array bekommt die Werte des ersten Arrays
   MyArray2:=MyArray1;
  

  {Schleife Anfang ...}
  // Mit dem ersten Array wird gearbeitet ...
  // Erstes Array auf Ausgangszustand setzen
   MyArray1:=MyArray2;
  {Schleife Ende}
             
end;


Wie ich aber rausgefunden habe, verändern sich die Werte des zweiten Arrays auch, wodurch ich den Ausgangszustand nicht mehr herstellen kann. :cry:
Hat jemand ne Lösung dafür, sodass der Ausgangszustand nicht mehr verloren gehen kann?

Danke schon mal!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 27.10.06 20:16 
Moin!

So kannst du kein dyn. Array kopieren, du kopierst ja nur den Zeiger mit der direkten Zuweisung. Am bestem machst du das mit einer verschachtelten Schleife. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
personX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 19

WIN 2000
Delphi 2006
BeitragVerfasst: Sa 28.10.06 10:28 
Danke für die Antwort! :zustimm:
Zitat:
Am bestem machst du das mit einer verschachtelten Schleife.

Ungefähr so?
ausblenden Delphi-Quelltext
1:
2:
3:
for i:=0 to Dim1-1 do            // Dim1 = Größe der ersten  Dimension
  for j:=0 to Dim2-1 do          // Dim2 = Größe der zweiten Dimension
    MyArray1[i,j]:=MyArray2[i,j]; // Erstes Array wird wieder auf den Anfangszustand gebracht
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Sa 28.10.06 10:45 
Hallo,

gibt es nicht den Befehl Copy dafür?
Sieh mal in der Hilfe nach!
Zitat:

function Copy(S; Index, Count: Integer): string;
function Copy(S; Index, Count: Integer): array;

Beschreibung

S ist ein Ausdruck des Typs String oder dynamisches Array. Index und Count sind Integer-Ausdrücke. Copy gibt einen Teilstring oder ein Teilarray zurück, das Count Zeichen oder Elemente ab S[Index] enthält. Der Teilsstring oder das Teilarray ist eine eindeutige Kopie (d.h., Speicher wird nicht gemeinsam mit S genutzt, obwohl Zeiger- oder Objekt-Elemente des Arrays nicht kopiert werden).

Ist Index größer als die Länge von S, gibt Copy einen leeren String oder ein leeres Array zurück.

Gibt Count mehr Zeichen oder Array-Elemente an, als verfügbar sind, werden nur die Zeichen oder Elemente von S[Index] bis zum Ende von S zurückgegeben.

Hinweis: Wenn S ein dynamisches Array ist, brauchen Sie die Parameter Index und Count nicht anzugeben. Copy kopiert dann das gesamte Array.



Gruss Horst
personX Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 19

WIN 2000
Delphi 2006
BeitragVerfasst: Sa 28.10.06 11:07 
Zitat:
Hinweis: Wenn S ein dynamisches Array ist, brauchen Sie die Parameter Index und Count nicht anzugeben. Copy kopiert dann das gesamte Array.


Genau nach soetwas habe ich gesucht. Also, ich denke, leichter und kürzer geht es wirklich nicht mehr! :mrgreen:

Vielen Dank an alle!