Ну, мой код просто написан как пример. Хотя ошибку можно было бы и привести...
По твоему коду.
1. Что за массив такой - Th. Нигде не описан.
2. Зачем вообще оставлять указатели на потоки, если они у тебя FreeOnTerminate и ты к ним потом все-равно не обращаешься?
3. Сорри, вот тут надо округлить или использовать div:
Код:
Th[Threads].i := Threads * (Length(A) div NumberOfThreads);
Th[Threads].h := (Threads + 1) * (Length(A) div NumberOfThreads) - 1;
4. Все-равно работать не будет, т.к. этот код предполагает массив с заданиями от 0 до Count-1.
5. Вообще, тут тебе и массив-то этот нафиг не нужен, если ты просто передаешь циферки. Т.е., если у тебя интервал 3..10, то
Код:
i := 3 + Threads * (10-3) div NumberOfThreads;
h := 3 + (Threads + 1) * (Length(A) div NumberOfThreads) - 1;
Как-то так, что-ли...
Ну а внутри потока делаешь обычный цикл от i до h.