Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
18 / 18 / 10
Регистрация: 04.07.2013
Сообщений: 260
Записей в блоге: 1

При нажатии на кнопку, должно создаться столько потоков, сколько указанно в Edit

08.07.2014, 16:52. Показов 2543. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!)
На форме у меня есть один едит и есть одна кнопка.
При нажатии на кнопку, должно создаться столько потоков, сколько указанно в едите.
Делаю так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var
i : integer;
begin
i := 0;
while i < StrToInt(edit1.text) do
    begin
      MyThread := TMyThread.Create(True); 
      MyThread.Priority := tpNormal;
      MyThread.FreeOnTerminate := False;
      MyThread.Resume;
      Inc(i);
    end;
 
 
procedure TMyThread.Execute;
begin
txt := IntToStr(MyThread.ThreadID);
Synchronize(WriteLog);
end;
 
 
procedure TMyThread.WriteLog;
begin
  Form1.Memo1.Lines.Add(txt);
end;
и в итоге у меня в мемо выводится:

4988
7900
7900
8252
8252


хотя всегда разные числа, бывает что вообще 5 одинаковых.
Это значит что потоки неправильно как-то создаются? или один поток выполняет одну и ту же функцию?(пишет свой ид несколько раз), а остольные ничего не делают?

И еще вопрос? можно ли как-то задать ид потоку.
делал так:
Delphi
1
MyThread.ThreadID := i;
но ошибка:
Delphi
1
Cannot assign to a read-only property
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2014, 16:52
Ответы с готовыми решениями:

Как при нажатии на кнопку считать число и создать коллекцию на столько элементов?
такой вопрос private void button7_Click(object sender, EventArgs e) { textBox1.Text += &quot;1&quot;; ...

При нажатии на кнопку F1 для этой страницы должно открыться окно
При нажатии на кнопку F1 для этой страницы должно открыться окно, в котором отсутствует панель инструментов. Отмените событие по умолчанию...

При нажатии на кнопку нужно создать Edit
Всем привет. Недавно начал работать в C++ builder. Появилась потребность в создании Edit при нажатии на кнопку, вернее уже есть один Edit в...

29
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.07.2014, 16:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от TUberwer Посмотреть сообщение
вы тоже ничего не предложили
Ты ж партизанишь по поводу содержимого ф-ции GetAkk - как же тут можно что-то предложить, кроме "Ахтунг ! Партизанен, сдавайся !" ?)
0
18 / 18 / 10
Регистрация: 04.07.2013
Сообщений: 260
Записей в блоге: 1
09.07.2014, 16:55  [ТС]
ну я уже выше писал. я делал вообще три функции. getakk:integer; getlogin(getakk):string; getpass(getakk):string;

гетакк выводит номер строки в stringlist, который подходит, getlogin берет этот номер строки, и возвращает логин из этой строки(там логин:пасс), ну и гетпасс думаю понятно.

Но так как я написал это все в одно, то сократил код, теперь я просто отделяю логин, а остаток остается в пароль. а тогда я делал так, что и логин и пароль с целой строки выделяется. на одно действие меньше.

Добавлено через 14 минут
еще есть вопрос. Смотрите, мне нужно в определенное время удалять поток, и создавать новый. Можно ли создавать поток из потока? или лучше так не делать? как тогда можно создать поток? написать отдельно какую-то функцию и вызывать ее с помощью синхронайз?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.07.2014, 17:15
Цитата Сообщение от TUberwer Посмотреть сообщение
я написал это все в одно
А что при этом изменилось в плане потокобезопасности ?

Цитата Сообщение от TUberwer Посмотреть сообщение
Можно ли создавать поток из потока?
Можно.
Более того, создать поток не из потока не возможно в принципе)

Цитата Сообщение от TUberwer Посмотреть сообщение
вызывать ее с помощью синхронайз?
Это зависит от уровня ее потоконебезопасности
0
18 / 18 / 10
Регистрация: 04.07.2013
Сообщений: 260
Записей в блоге: 1
09.07.2014, 17:52  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
создать поток не из потока не возможно в принципе)
а.. ну да, не правильно тогда сформулировал вопрос, но ответ уже ясен.

Это зависит от уровня ее потоконебезопасности
и как понять уровень ее потоконебезопасности?)
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
09.07.2014, 20:34
Надо проанализировать свой код.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
09.07.2014, 22:06
Цитата Сообщение от TUberwer Посмотреть сообщение
При нажатии на кнопку, должно создаться столько потоков, сколько указанно в едите.
Цитата Сообщение от TUberwer Посмотреть сообщение
я делал вообще три функции. getakk:integer; getlogin(getakk):string; getpass(getakk):string;
как всегда, начали с одного, закончили другим

Автор! Скажи уже, что вообще надо сделать-то. Народ уже извелся намеками...
0
18 / 18 / 10
Регистрация: 04.07.2013
Сообщений: 260
Записей в блоге: 1
09.07.2014, 22:34  [ТС]
вообще суть программы такова: я загружаю несколько своих твиттер аккаунтов, и могу в них одновременно работать. Темы новые стараюсь по меньше создавать, потому что раньше помню часто мне модераторы(может не на этом форуме) говорили. раз там уже затронул, там и пиши.
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
10.07.2014, 01:04
твиттер позволяет мультиподключение с одного IP?

не с того конца идешь.
алгоритм таков.
главная программа разбирает твои логины и пароли сама и для каждой пары запускает поток, в котором производится авторизация (вопрос, можно ли ее программно, без юзера осуществить, не рассматриваем)
потоки подключаются к аккам и заканчиваются. Последним вздохом каждый их них может вызвать событие OnTerminate, где можно передать данные от потока, который после этого "умрет", в программу...
0
18 / 18 / 10
Регистрация: 04.07.2013
Сообщений: 260
Записей в блоге: 1
10.07.2014, 01:10  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
твиттер позволяет мультиподключение с одного IP?
да

если я правильно вас понял, то единственное изменение - чтоб логины и пароли разбивались в самом начале, в программе основной, и уже в потоках сразу логинились? ну да.. можно и так попробовать..
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
10.07.2014, 05:59
ну, как сказать...
еще
Delphi
1
2
3
4
5
6
7
8
9
10
11
MyThread.FreeOnTerminate := true;
MyThread.OnTerminate := ThreadTerminated;
ThreadList.Add(MyThread);
 
procedure TForm1.ThreadTerminated(Sender:TObject);
begin
  PassResults(Sender as TMyThread);
  ThreadList.Remove(Sender);
  if ThreadList.Count<MaxCount and WaitList.Count>0 then
    CreateNewThread;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2014, 05:59

Удалить текст в Edit при нажатии на кнопку
Здравствуйте форумчани! Решил создать для себя трудную задачу. Суть в следующем. На форме создал ЭДИТ1 и кнопку БАТТОН. Ввожу в ЭДИТ1...

Как при нажатии на кнопку добавлять edit
Есть таблица usluga в нем: id | usluga | price | По нажатии на кнопку &quot;Добавить&quot; записывается в тхт файл &lt;input name='name'...

Создать столько же потоков, сколько строк в List
Всем привет! Понадобилось написать программку которая посылает запрос и с ним текст из блокнота Я ее без проблем написал, но только...

Как при нажатии на кнопку в Edit выделить текст?
Я нажимаю на кнопку, в едите генерируется текст, но мне надо, чтобы он в это же время выделялся, как это сделать?

Выводить из StringList в Edit слова по порядку при нажатии на кнопку
Загружен текст в stringlist Вася Петя Маша Саша Коля Оля Нужно при нажатии на button выводить в edit слово, нажал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru