Any efficient way to convert a TArray <string> to a TStringDynArray?

Pretty much of my code ( delphi-dutil , etc.) uses TStringDynArray. Now I want to convert all the keys a TDictionary<string, string>to TStringDynArray. Sorry, I found TDictionary.Keys.ToArraythat TArray<T>.

I know that I can write a simple copy function to make the original copy of the content, but mine is TStringDynArrayusually very large (about 10,000 entries), so I'm looking for an efficient way to convert TArray<string>to TStringDynArray.

function ConvertToStringDynArray(const A: TArray<string>): TStringDynArray;
var
  I: Integer;
begin
  assert(A <> nil);
  SetLength(Result, Length(A));
  for I := 0 to Length(A) - 1 do
    Result[I] := A[I];
end;
+4
source share
1 answer

TArray<T>. , . .

, . , , .

. , , . , , .

var
  DynArr: TStringDynArray;
  GenericArr: TArray<string>;
....
DynArr := TStringDynArray(GenericArr);
GenericArr := TArray<string>(DynArr);

.

, . . :

function StringDynArray(const arr: TArray<string>): TStringDynArray;
begin
  Result := TStringDynArray(arr);
end;

: : TArray <X> X?

+10

Source: https://habr.com/ru/post/1529163/


All Articles