![]() |
Re: dynamische Array kopieren (letztes Element fehlt)
Length(arr)-1 = High(arr) ... bei einem dynamischem Array
Und jupp, es ist Copy(source, start, len). Zitat:
|
Re: dynamische Array kopieren (letztes Element fehlt)
edit
|
Re: dynamische Array kopieren (letztes Element fehlt)
Man iteriert über alle eingebauten Delphi-Arrays, egal ob statisch, dynamisch, offen oder sonstwie, per
Delphi-Quellcode:
, und schon passt's.
Low(arr) to High(arr)
|
Re: dynamische Array kopieren (letztes Element fehlt)
Zitat:
Delphi-Quellcode:
:angel2:
//var el: telement;
// arr: array of telement; for el in arr do |
Re: dynamische Array kopieren (letztes Element fehlt)
Zitat:
Leider ist das for-in manchmal nicht gerade effizient, wenn man es mit "herkömmlichen" for-Schleifen vergleicht. Bei Schleifen über Sets und Arrays ist das aber WIMRE nicht so. Muss ich glatt bei Gelegenheit noch mal checken. |
Re: dynamische Array kopieren (letztes Element fehlt)
Mit
Delphi-Quellcode:
wird aber nur die Referenz kopiert. Wenn man nun
dynArray2 := dynArray1;
Delphi-Quellcode:
setzt, wird auch dynArray1[0] geändert! (Anderes als bei Strings). Das Kopieren der Referenz ist nicht das gleiche, wie der Copy-Befehl. Nur beim Copy-Befehl wird der komplette Inhalt kopiert.
dynArray2[0] := IrgendwasNeues;
Die Delphi-Hilfe dazu: Zitat:
|
Re: dynamische Array kopieren (letztes Element fehlt)
Zitat:
Edit: ich weiß nicht, wo der Fehler war.. aber jetzt funktioniert es auf einmal mit
Delphi-Quellcode:
:gruebel: (danke allen) :thumb:
dynArray2 := Copy(dynArray1, 0, High(dynArray1) + 1);
|
Re: dynamische Array kopieren (letztes Element fehlt)
Zitat:
Edit: ich weiß nicht, wo der Fehler war.. aber jetzt funktioniert es auf einmal mit
Delphi-Quellcode:
:gruebel: (danke allen) :thumb:[/quote]
dynArray2 := Copy(dynArray1, 0, High(dynArray1) + 1);
Delphi-Quellcode:
oder eben
dynArray2 := Copy(dynArray1, 0, Length(dynArray1));
Delphi-Quellcode:
dynArray2 := Copy(dynArray1);
|
AW: dynamische Array kopieren (letztes Element fehlt)
Nur mal so am rande bedeutet das, dass folgendes das selbe macht
Delphi-Quellcode:
Procedure Main;
var Keys:TStringDynArray; Procedure KeyFooRef(var arr:TStringDynArray)//MIT VAR Begin Setlength(arr,4); arr[0] := 'Das'; arr[1] := 'ist'; arr[2] := 'ein'; arr[3] := 'Test'; end; Procedure KeyFooVal(arr:TStringDynArray)// OHNE VAR Begin Setlength(arr,4); arr[0] := 'Das'; arr[1] := 'ist'; arr[2] := 'ein'; arr[3] := 'Test'; end; Begin KeyFooRef(Keys);//Fall 1 KeyFooVal(Keys);//Fall 2 end; |
AW: dynamische Array kopieren (letztes Element fehlt)
Zitat:
So sieht man's vielleicht deutlicher:
Delphi-Quellcode:
procedure Main;
var Keys: TStringDynArray; procedure KeyFooRef(var arr: TStringDynArray); //MIT VAR begin Setlength(arr, 4); arr[0] := 'Das'; arr[1] := 'ist'; arr[2] := 'ein'; arr[3] := 'Test'; end; procedure KeyFooVal(arr: TStringDynArray); // OHNE VAR begin Setlength(arr, 4); arr[0] := 'Das'; arr[1] := 'ist'; arr[2] := 'ein'; arr[3] := 'Test'; end; procedure Raus(AIndex: Integer; const arr: TStringDynArray); var i: Integer; begin Write(AIndex, ':'); for i := Low(arr) to High(arr) do Write(' ', arr[i]); Writeln; end; begin Raus(1, Keys); KeyFooRef(Keys); //Fall 1 Raus(2, Keys); Keys := nil; Raus(3, Keys); KeyFooVal(Keys); //Fall 2 Raus(4, Keys); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 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