Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Projektplanung und -Management (https://www.delphipraxis.net/85-projektplanung-und-management/)
-   -   System.Generics.Collections.TArray.Copy (https://www.delphipraxis.net/182886-system-generics-collections-tarray-copy.html)

Der schöne Günther 24. Nov 2014 12:29

AW: System.Generics.Collections.TArray.Copy
 
Gewissheit würden wir kriegen wenn wir noch mindestens einen
  • mit XE7
  • mit XE7.1

das kontrollieren lassen könnten. Freiwillige vor!

Union 24. Nov 2014 12:36

AW: System.Generics.Collections.TArray.Copy
 
@DsG: Meine Build-Nummer (7.0) habe ich angegeben, und dort ist es noch so wie bei Dir. Uwe scheint wie gesagt die 7.1 zu haben.

Uwe Raabe 24. Nov 2014 12:43

AW: System.Generics.Collections.TArray.Copy
 
Embarcadero® RAD Studio XE7 Version 21.0.17707.5020 (entspricht XE7 Update 1)

Uwe Raabe 24. Nov 2014 12:51

AW: System.Generics.Collections.TArray.Copy
 
OMG! :shock:

Wer hat denn den Code von TArray.Copy<T> durch die Qualitätsprüfung gelassen?
Delphi-Quellcode:
class procedure TArray.Copy<T>(const Source, Destination: array of T; SourceIndex, DestIndex, Count: NativeInt);
begin
  CheckArrays(Pointer(@Source[0]), Pointer(@Destination[0]), SourceIndex, Length(Source), DestIndex, Length(Destination), Count);
  if IsManagedType(T) then
    System.CopyArray(Pointer(@Destination[SourceIndex]), Pointer(@Source[SourceIndex]), TypeInfo(T), Count)
  else
    System.Move(Pointer(@Destination[SourceIndex])^, Pointer(@Source[SourceIndex])^, Count * SizeOf(T));
end;
Die Deklaration von System.CopyArray ist zwar
Delphi-Quellcode:
procedure CopyArray(Dest, Source...


aber die von System.Move immer noch
Delphi-Quellcode:
procedure Move(const Source; var Dest;...

Sir Rufo 24. Nov 2014 12:58

AW: System.Generics.Collections.TArray.Copy
 
Als Ergänzung hier mal meine TestCases, die ich an den jeweiligen BugReport gehängt habe

RSP-9620
Delphi-Quellcode:
unit Test.System;

interface

uses
  TestFramework;

type
  Test_System_Routines = class( TTestCase )
  strict private
  public
    procedure SetUp; override;
    procedure TearDown; override;
  published
    procedure Test_CopyArray_Integer;
    procedure Test_CopyArray_Int64;
    procedure Test_CopyArray_String;
    procedure Test_CopyArray_Variant;
  end;

implementation

procedure Test_System_Routines.SetUp;
begin
  inherited;
end;

procedure Test_System_Routines.TearDown;
begin
  inherited;
end;

procedure Test_System_Routines.Test_CopyArray_Integer;
var
  LSource : TArray<Integer>;
  LDest: TArray<Integer>;
  LLength : Integer;
begin
  LLength := 5;
  SetLength( LSource, LLength );
  SetLength( LDest, LLength );
  CopyArray( @LDest[0], @LSource[0], TypeInfo( Integer ), LLength );
end;

procedure Test_System_Routines.Test_CopyArray_Int64;
var
  LSource : TArray<Int64>;
  LDest: TArray<Int64>;
  LLength : Integer;
begin
  LLength := 5;
  SetLength( LSource, LLength );
  SetLength( LDest, LLength );
  CopyArray( @LDest[0], @LSource[0], TypeInfo( Int64 ), LLength );
end;

procedure Test_System_Routines.Test_CopyArray_String;
var
  LSource : TArray<string>;
  LDest: TArray<string>;
  LLength : Integer;
begin
  LLength := 5;
  SetLength( LSource, LLength );
  SetLength( LDest, LLength );
  CopyArray( @LDest[0], @LSource[0], TypeInfo( string ), LLength );
end;

procedure Test_System_Routines.Test_CopyArray_Variant;
var
  LSource : TArray<Variant>;
  LDest: TArray<Variant>;
  LLength : Integer;
begin
  LLength := 5;
  SetLength( LSource, LLength );
  SetLength( LDest, LLength );
  CopyArray( @LDest[0], @LSource[0], TypeInfo( Variant ), LLength );
end;

initialization

RegisterTest( Test_System_Routines.Suite );

end.
RSP-9622
Delphi-Quellcode:
unit Test.System.Generics.Collections;

interface

uses
  TestFramework,
  System.Generics.Collections;

type
  Test_System_Generics_Collections_TArray = class( TTestCase )
  strict private
    FSource: TArray<Integer>;
  public
    procedure SetUp; override;
    procedure TearDown; override;
  published
    procedure Test_Copy_1;
    procedure Test_Copy_2;
    procedure Test_Copy_3;
    procedure Test_Copy_4;
  end;

implementation

procedure Test_System_Generics_Collections_TArray.SetUp;
begin
  inherited;
  SetLength( FSource, 10 );
end;

procedure Test_System_Generics_Collections_TArray.TearDown;
begin
  inherited;

end;

procedure Test_System_Generics_Collections_TArray.Test_Copy_1;
var
  LDest: TArray<Integer>;
begin
  SetLength( LDest, 5 );
  TArray.Copy<Integer>( FSource, LDest, Length( LDest ) );
end;

procedure Test_System_Generics_Collections_TArray.Test_Copy_2;
var
  LDest: TArray<Integer>;
begin
  SetLength( LDest, 5 );
  TArray.Copy<Integer>( FSource, LDest, Length( LDest ) - 1 );
end;

procedure Test_System_Generics_Collections_TArray.Test_Copy_3;
var
  LDest: TArray<Integer>;
begin
  SetLength( LDest, 5 );
  TArray.Copy<Integer>( FSource, LDest, 0, 0, Length( LDest ) );
end;

procedure Test_System_Generics_Collections_TArray.Test_Copy_4;
var
  LDest: TArray<Integer>;
begin
  SetLength( LDest, 5 );
  TArray.Copy<Integer>( FSource, LDest, 0, 0, Length( LDest ) - 1 );
end;

initialization

RegisterTest( Test_System_Generics_Collections_TArray.Suite );

end.

Uwe Raabe 24. Nov 2014 13:00

AW: System.Generics.Collections.TArray.Copy
 
https://quality.embarcadero.com/browse/RSP-9763

Ich plädiere für ein XE7 Update 2...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:12 Uhr.
Seite 2 von 2     12   

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