Moin Joe,
mal eben zu Punkt 2:
Die for-Schleife brauchst Du da gar nicht.
Wenn ListBox1.ItemIndex <> -1 ist, kannst Du diesen Wert auch direkt zum löschen verwenden.
Delphi-Quellcode:
// Statt der for Schleife
ListBox1.Items.Delete(ListBox1.ItemIndex);
Da Du ja vorher geprüft hast, das es ein gültiger Index ist sollte da so gehen.
Wenn, müsste die Schleife von 0 bis ListBox1.Items.Count-1 gehen, da der Index hier nullbasiert ist. Passieren würde in Deinem Beispiel zwar nichts, aber es ist sauberer.
Habt ihr irgendeine Vorgabe, wie das Array aussehen soll?