Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Inhalt von einem Array in ein anderes Array kopieren? (https://www.delphipraxis.net/193833-inhalt-von-einem-array-ein-anderes-array-kopieren.html)

Caspar 13. Sep 2017 17:40

Inhalt von einem Array in ein anderes Array kopieren?
 
Guten Abend!
Ich habe ein kleines Problemchen ^^
Also, ich wollte den Inhalt von meinem Array auf ein oder zwei andere Array kopieren.

Zuerst habe habe ich gedacht es ganz einfach mit:
Delphi-Quellcode:
Array1:=Array2;
Aber dem ist leider nicht so... D:

Dann habe ich mich im Internet schlau gemacht und es mit
Delphi-Quellcode:
Array1 := Copy(Array2);
probiert, das ging aber auch nicht.

Nun hoffe ich das ich eine Antwort von euch bekommen kann :)

Und ja, ich habe schon im Internet nachgeschaut, aber da habe ich keine Antwort gefunden, die mir geholfen hat :o

Uwe Raabe 13. Sep 2017 17:52

AW: Inhalt von einem Array in ein anderes Array kopieren?
 
Zitat:

Zitat von Caspar (Beitrag 1381062)
Delphi-Quellcode:
Array1 := Copy(Array2);

Das ist zumindest der richtige Weg bei dynamischen Arrays. Zeig doch mal die Deklaration von Array1 und Array2.

t.roller 13. Sep 2017 17:53

AW: Inhalt von einem Array in ein anderes Array kopieren?
 
Vielleicht so:
Zu und Von müssen identische Arrays sein.
Delphi-Quellcode:
for i:=0 to anzahleintraege do
 Zu[i]:=Von[i];

Caspar 13. Sep 2017 18:03

AW: Inhalt von einem Array in ein anderes Array kopieren?
 
Also... Das Problem hat sich selbst gelöst!


für die, die vlt. das gleiche Problem hatten hier nochmal kurz meine Lösung:
Delphi-Quellcode:
SetLength(Zahl1, Length(ZahlSort));
Zahl1:=ZahlSort;
Ich habe also erst die Länge des "freien Array" des zu kopierenden Array angepasst und des dann am Ende einfach gleichgesetzt.
Sorry, das ich übermütig hier ein neues Thema aufgemacht habe ^^
Naja, erst denken, dann handelt :o

Redeemer 13. Sep 2017 19:52

AW: Inhalt von einem Array in ein anderes Array kopieren?
 
Zitat:

Zitat von Caspar (Beitrag 1381067)
Also... Das Problem hat sich selbst gelöst!


für die, die vlt. das gleiche Problem hatten hier nochmal kurz meine Lösung:
Delphi-Quellcode:
SetLength(Zahl1, Length(ZahlSort));
Zahl1:=ZahlSort;

Das ist genau dasselbe wie bei dem ersten Codeblock im Eröffnungspost. Dem Compiler ist das egal, ob da noch was davor steht. Aber du hast ja auch nicht geschrieben, warum das nicht funktioniert hat.

Für so eine Anweisung muss das Array ein Typ sein. Mit Arrays, die als Array definiert sind, geht das nicht, da braucht man Copy.

himitsu 13. Sep 2017 20:05

AW: Inhalt von einem Array in ein anderes Array kopieren?
 
CopyOnWrite gibt es aus mir total unverständlichen Gründen nur bei Strings (das sind intern auch nur sowas wie ein Array of Char).

Na gut, ganz unverständlich nicht, da man so die Speicherzugriffe beschleunigt hat, weil da rein garnichts geprüft wird, bevor man in ein Feld was rein schreibt.
Aber ich versteh nicht, warum man das nicht dennoch aktivieren kann, bzw. warum es standardmäßig nicht aktiviert ist und man es optional deaktivieren kann.

Beim Schreibzugriff auf ein Char eines Strings, wird die Referenzzählung geprüft und wenn man nicht der Einzige ist, dann wird der String vorher kopiert. (UniqueString)
Bei dynamischen Arrays passier das aber nicht.
Dort kann/muß man via Copy, was dem UniqueString entspricht, selber dafür sorgen.


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