Показать сообщение отдельно
  #14  
Старый 02.10.2015, 19:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, мой код просто написан как пример. Хотя ошибку можно было бы и привести...
По твоему коду.
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.
Ответить с цитированием