Per ovviare al problema devi poter disporre di una variabile che ti indica il numero di elementi presenti nell'array (ad esempio, itemCount).
Per eliminare un elemento esegui le seguenti operazioni:

1) Shift di tutti gli elementi successivi all'elemento da eliminare
2) Diminuzione del valore della variabile itemCount di 1.

Devi considerare, però, che ogni volta che vai a leggere l'array, lo devi considerare solamente per la lunghezza espressa da itemCount

Esempio di eliminazione:
codice:
procedure Elimina(posizione: integer)
var i: integer;
begin
   for i:=posizione to itemCount-1 do
   begin
      tuoArray[i] := tuoArray[i+1];
   end;
   itemCount := itemCount - 1;
end;
N.B.: L'elemento non viene fisicamente eliminato (non viene, quindi, rilasciata la memoria corrispondente): ma l'effetto logico è lo stesso.


Ciao.