Procedure TArray.Resize(sz: Word);
Var p: PArrType;
Begin
If sz <= GetSize Then Exit;
p := Allocate(sz);
FillChar(p^, sz * SizeOf(TType), 0); //Зачем эта строка? Без нее тоже работает
move(arr^, p^, GetSize * SizeOf(TType));
DeAllocate(GetSize);
SetSize(sz); arr := p
End;
Взято из
http://volvo71.narod.ru/faq_folder/dyn_arr.htm ---> http://volvo71.narod.ru/faq_folder/Array.rar