TIntDyArray in der Funktion von Uwe eingebaut, da ich dort immer nur eine Stelle habe, wo der Zähler hochgeht
Eventuell ist es effizienter, beim ersten Mal die Anzahl der Vorkommen zu ermitteln, dann das Array auf die passende Größe setzen und im zweiten Durchlauf dann die Positionen einzutragen. Mehrfache SetLength-Aufrufe wären da eher suboptimal.
Alternativ eine TList<Integer> füllen und über ToArray in ein Array umwandeln.
Man kann natürlich auch erstmal das Array mit Length(S) anlegen, wenn Speicher keine Rolle spielt.