Jak usunąć element z tablicy dynamicznej (odpowiednik Delete i Concat dla stringów)

Dryobates
type
  TMojaTablica = array of TMojTyp;

function Concat(S1, S2: TMojaTablica): TDoubleArray;overload; //nie ma takiej konieczności, ale na wszelki wypadek jakby się chciało dopisać inne wersje.
begin
  SetLength(Result, Length(S1)+Length(S2));
  Move(S1[0], Result[0], Length(S1)*SizeOf(TMojTyp));
  Move(S2[0], Result[Length(S1)], Length(S2)*SizeOf(TMojTyp));
end;

procedure Delete(var S: string; index, Count:Integer);overload; //Aby mieć wciąż dostęp do zwykłej procedury Delete
begin
   System.Delete(S, Index, Count);
end;

procedure Delete(var S: TMojaTablica; index, Count:Integer);overload;
begin
  S := Concat(Copy(S, 0, index), Copy(S, index+Count, Length(S)-index-Count));
end;


Użycie:
 Delete(Tablica, 2, 1); //Usuwa 1 element zaczynjąc od nr 2 
FAQ

1 komentarz

Bardzo się przyda do mojego moduliku do plug-inów ;-)