Hmm, okay, auf den zweiten Blick:
Delphi-Quellcode:
while Less(tStart, 0)
do Inc(tStart);
while Less(0, tStop)
do Dec(tStop);
Fehlt da nicht jeweils eine Abbruchbedingung gegen das Überschreiten der Array-Grenzen?
Edit: Außerdem:
aData[0] := aData[(tStart + tStop) DIV 2];
Da wird das erste Element ja einfach überschrieben. Wenn dann müsstest du die beiden Elemente vertauschen. Oder du lässt dieses Implementierungsdetail einfach weg und speicherst das Pivot-Element in einer lokalen Variable zwischen.