Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Array in Array kopieren (https://www.delphipraxis.net/148885-array-array-kopieren.html)

technofreak 10. Mär 2010 11:33


Array in Array kopieren
 
Hallo

ich habe ein zweidimensionales dynamisches Array (LongInt) und möchte es in eine anderes zweidimensionales dynamisches Array kopieren. Die Elemente sollen jedoch nicht an den gleichen Positionen stehen wie im Original, sondern um eine bestimmte Anzahl von Zeilen und Spalten verschoben sein.Hier mal ein Beispiel wie es aussehen soll.

A1:

111
111
111

A2:

000000
000000
000000
000000
000000

Ergebnis soll z.B. sein:

000000
001110
001110
001110
000000

Kann man das nur über zwei verschachtelte Schleifen lösen die jedes Element einzeln kopieren oder gibt es eine Möglichkeit das über einen einfachen Befehl zu lösen?

Silvio

himitsu 10. Mär 2010 11:37

Re: Array in Array kopieren
 
Delphi-Quellcode:
var
  x, y: Integer;
  A, B: array of array of Integer;

// einfach

for x := 0 to High(A) do
  for y := 0 to High(A[x]) do
    B[x + xOffset, y + yOffset] := A[x, y];

// oder (Zusammenhängendes kann man zusammen kopieren)

for x := 0 to High(A) do
  Move(B[x + xOffset, yOffset], A[x, 0], SizeOf(Integer) * Length(A[x]));

technofreak 10. Mär 2010 14:02

Re: Array in Array kopieren
 
Hallo

Danke für die schnelle Hilfe. Move funktioniert, in dem Beispiel ist aber Quelle und Ziel vertauscht. Aber dafür gibt es ja eine Hilfe in der man genauer nachlesen kann. :thumb:

Silvio

Coder 10. Mär 2010 15:27

Re: Array in Array kopieren
 
kann man nicht mit assign arbeiten?

oder Assignto() ?

himitsu 10. Mär 2010 16:19

Re: Array in Array kopieren
 
Zitat:

Zitat von technofreak
Aber dafür gibt es ja eine Hilfe in der man genauer nachlesen kann. :thumb:

:thumb:

Zitat:

Zitat von technofreak
in dem Beispiel ist aber Quelle und Ziel vertauscht.

Da macht es sich bemerkbar, daß ich meißtens MoveMemory nutze (dort isses andersrum) :oops:

(ist zwar nicht schneller, aber ich find es übersichtlicher, also vom Namen her)


Zitat:

Zitat von Coder
kann man nicht mit assign arbeiten?

oder Assignto() ?

Hmmmm, das sind hier arrays und keine Klassen und selbst wenn, dann müßte man es dennoch selber schreiben, selbst wenn man sich dafür eine entsprechende Assign-Methode erstellt, da es sowas nicht fertig gibt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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