Programowanie w języku Delphi » FAQ

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

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 

1 komentarz

brodny 2003-09-01 10:09

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