This is a very frequent pattern throughout my code:
SetLength(SomeDynamicArray, Length(SomeDynamicArray)+1);
SomeDynamicArray[High(SomeDynamicArray)] := NewE
Here's a hack with generics which only works with TArray:
type
TAppender = class
class procedure Append(var Arr: TArray; Value: T);
end;
class procedure TAppender.Append;
begin
SetLength(Arr, Length(Arr)+1);
Arr[High(Arr)] := Value;
end;
Usage:
var
TestArray: TArray;
begin
TAppender.Append(TestArray, 5);
end.