![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]()
Есть мемо, в котором 23 строки с инфой и есть 3 потока.
Как мне отправить каждому потоку равное количество строк на обработку? В голову приходила идея, что то вроде: Код:
Поможете? |
![]() |
![]() |
![]() |
#2 |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]()
Выдели массив стринг под размер массива потоков.
var StringList: Array of string; begin SetLength(StringList, Length(ThreadArray)); В цикле от первой строки до последней For i := 0 to Memo1.Count - 1 запиши каждую строку в элемент массива по индексу. По достижении максимального индекса массива, сдвигай индекс массива на ноль. inc(k); if k > Length(StringList) then k := 0 StringList[k] := StringList[k] + Memo1Lines[i] + #13#10; В итоге получишь в массиве все свои строки. Отправляй каждый стринг массива в поток. ThreadArray[i]:=Thr.Create(StringList[i]); Последний раз редактировалось doktor255; 22.02.2014 в 00:51. |
![]() |
![]() |
![]() |
#3 | |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,926
|
![]()
Естественно с ошибкой. Кто же удаляет элементы массива/списка и т.п. в прямом цикле for.
Цитата:
Читать внимательно вопрос нужно даже если вопрос глупый. Последний раз редактировалось Stilet; 22.02.2014 в 10:28. |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]()
пишу так:
Код:
А если записать так: Код:
В чем может быть дело? Последний раз редактировалось bilibian; 22.02.2014 в 09:40. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 28.12.2011
Сообщений: 20
|
![]() ![]() Вариантов много, а то что вы пишите, так это от незнания. Вам проще отслеживать, завершения работы потока, и добавлять данные (из списка) либо уничтожать поток. Вот варианты реализации: 1. CallBack процедуры внутри класса потока, которая бы возращала какие либо данные о том что проделал поток. Пример callback функции Код:
![]() 2. Создать внутреннюю procedure/function в классе потока, с возращением каких либо данных. Вот ссылка И вообще читайте всю инфу по потокам... Последний раз редактировалось wendstor; 22.02.2014 в 10:28. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]()
wendstor, если использовать тот же код, что я приложил выше и вместо переменной memotext отправлять в поток полный список из мемо (ThreadArray[i]:=Thr.Create(memo2.lines);), то все работает, только каждый поток проделывает одно и тоже.
По этому я решил разделить список мемо на равные части и распределить по потокам. |
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 28.12.2011
Сообщений: 20
|
![]() Цитата:
Читайте всё по потокам ![]() |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]()
wendstor, если читать все по потокам, то мне и недели не хватит, чтобы во всем разобраться. Проще спросить конкретно то, что тебя в данный момент интересует и сделать по примеру. Кстати пример не совсем подходит к моей ситуации.
Если можно, то покажите, пожалуйста, пример, который более наглядно все объясняет. |
![]() |
![]() |
![]() |
#9 | |
Заблокирован
Регистрация: 31.03.2011
Сообщений: 976
|
![]() Цитата:
Я выше привёл код, как разбросать строки из мемо по массиву стринг, равному по длине массиву потоков, а после отправить в каждый поток свой string содержащий строки. Что не устраивает? Последний раз редактировалось doktor255; 22.02.2014 в 12:14. |
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 21.01.2014
Сообщений: 389
|
![]()
doktor255, я пробовал Ваш способ, но в дальнейшем не получается обратиться к конкретной строке уже в самом потоке. Тут уже не применить index, lines и тому подобные команды.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с потоками | ThreadDelphi | Общие вопросы Delphi | 3 | 08.04.2012 18:58 |
Работа с потоками | derElektroBesen | Помощь студентам | 3 | 17.07.2011 14:33 |
Работа с потоками | gagarin0 | Win Api | 4 | 05.11.2010 02:30 |
Работа с потоками | Нюська | Общие вопросы Delphi | 3 | 27.05.2009 00:52 |
работа с потоками | Alex_Pro | Общие вопросы .NET | 1 | 01.07.2008 07:25 |