![]() |
System.Generics.Collections.TArray.Copy
Ich bin zu dumm dafür. Wie ist das gemeint? Doku ist natürlich keine vorhanden.
Delphi-Quellcode:
Ich finde, das ist richtig. Tatsächlich wirft er mir aber eine
var
firstArray, secondArray: TArray<Integer>; begin firstArray := [5,4,3,2,1]; SetLength(secondArray, Length(firstArray)); TArray.Copy(firstArray, secondArray, Length(firstArray));
Delphi-Quellcode:
-Exception um die Ohren denn in
EArgumentOutOfRangeException
System.Generics.Collections.pas steht:
Delphi-Quellcode:
Warum ist es denn ungültig wenn SourceIndex + Count >= SourceLength sind? Das muss doch so sein. Wenn ich ein Array mit fünf Elementen kopieren will- Dann ist doch Index = 0, Count = 5 und Length = 5.
class procedure TArray.CheckArrays(Source, Destination: Pointer; SourceIndex, SourceLength, DestIndex, DestLength, Count: NativeInt);
begin if (SourceIndex < 0) or (DestIndex < 0) or (SourceIndex >= SourceLength) or (DestIndex >= DestLength) or (SourceIndex + Count >= SourceLength) or (DestIndex + Count >= DestLength) then raise EArgumentOutOfRangeException.CreateRes(@SArgumentOutOfRange); if Source = Destination then raise EArgumentException.CreateRes(@sSameArrays); end; Ich finde, er müsste auf ">" prüfen und nicht ">=" Wo ist mein Denkfehler? |
AW: System.Generics.Collections.TArray.Copy
Copy?
Meinst du nicht eher
Delphi-Quellcode:
TArray.Copy<Integer>
Zitat:
Aber ja, > wäre da wohl besser.
Code:
0123456789
******* (SourceIndex + Count >= SourceLength) (3 + 7 >= 10) = True PS: Dein Beispiel kann man auch mit den alten Funktionen umsetzen.
Delphi-Quellcode:
Und gab es nicht auch eine Insert-Funktion im TArray?
firstArray := [5,4,3,2,1];
secondArray := Copy(firstArray); |
AW: System.Generics.Collections.TArray.Copy
Da sind zwei Fehler den ich schon gemeldet habe ...
![]() ![]() |
AW: System.Generics.Collections.TArray.Copy
Danke! Scheint aber nicht so wichtig zu sein da die Tickets noch nicht einmal jemandem zugewiesen sind. Ich meine, Arrays kopieren. Wer tut das schon.
Ich weiß immer nicht, ob ich mich freuen oder weinen soll wenn man sieht dass der Fehler nicht im eigenen Kopf, sondern im Embarcadero Sourcecode steckt :-D |
AW: System.Generics.Collections.TArray.Copy
Zitat:
Ohne eingelogt zu sein, kann man das ja nun nichmal mehr lesen. :wall: |
AW: System.Generics.Collections.TArray.Copy
Zitat:
Delphi-Quellcode:
class procedure TArray.CheckArrays(Source, Destination: Pointer; SourceIndex, SourceLength, DestIndex, DestLength, Count: NativeInt);
begin if (SourceIndex < 0) or (DestIndex < 0) or (SourceIndex >= SourceLength) or (DestIndex >= DestLength) or (SourceIndex + Count > SourceLength) or (DestIndex + Count > DestLength) then raise EArgumentOutOfRangeException.CreateRes(@SArgumentOutOfRange); if Source = Destination then raise EArgumentException.CreateRes(@sSameArrays); end; |
AW: System.Generics.Collections.TArray.Copy
Jetzt bin ich verwirrt. Ich stehe weiterhin zu meinem Wort, meine XE7 System.Generics.Collections.pas enthält genau das! Enterprise und Architect sollten sich doch hier nicht unterscheiden?
In der ![]() Größe: 72.436 Bytes Embarcadero® RAD Studio XE7 Version 21.0.17017.3725 Enterprise |
AW: System.Generics.Collections.TArray.Copy
Zitat:
Das ist aber blöd. |
AW: System.Generics.Collections.TArray.Copy
@Uwe, bei Build 21.0.17017.3725 war es aber noch die vom OP genannte Variante. Du hast sicher Update 1 bereits installiert. Allerdings ist diese Änderung nicht in den Release notes.
|
AW: System.Generics.Collections.TArray.Copy
Zitat:
Man kann sich vielleicht doch nicht immer auf die Vollständigkeit der Bugfix-Liste verlassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 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