![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| JJohn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.9.2005 Репутация: нет Всего: нет |
Ребята... Есть такая проблемка...
На тему процессов и потоков (ф-ции CreateProcess , CreateThread, и т.д.) Конкретней - написать программку, в консоле, которая выводит сортировку массива случай. чисел с отображением хода (програсса) в процентах, и чтобы можно было отменить слишком долгую операцию... Есть конечно еще пару вопросов, но пока меня это интересует... "Собрал" стандартный пузырьковой алгоритм сортировки... Разобрал ф-ции CreateProcess и CreateThread(вроде понятны все параметры и т..д.), только вот никак не пойму, как все это использовать в конкретной задаче? Посоветуйте хотя бы, с чего начать? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
ИМХО те хватит одного треда,
При вызове этой ф-ции , в параметрах указываешь собстно ф-цию потока и в ней делашь почти что хошь -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
при чем тут процесс -- не понял. если стоит такой вопрос -- зачем тебе CreatеThread?
береш TThread, в Execute пишеш свой алгоритм. после одного пробегания массива ( или еще когда-нить ) выводиш прогресс. паралельно ( не в этом потоке читаеш с консоли и если нужно тормозится -- вызываеш Terminate() потока ( не забывая в нем этот флаг контролировать ) ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| JJohn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 16.9.2005 Репутация: нет Всего: нет |
итак, что нужно точно сделать, стало более менее ясно... а то раньше сам не совсем понимал, что мне нужно.........
1) что нужно сделать первым, так это создать exe`шник, являющейся консольной программой. этот модуль должен производить сортировку большого массива(пользуемся "пузырьком", так как самый медленный способ). Массив выделяться должен динамически(для того чтобы в командной строке можно было передавать его размер) еще указано, что в режиме "по умолчанию" - производится вывод на экран, то есть режим пользователя, а в режиме "silent mode" не производится вывод на экран. Это обязательное условие того, что нужно сделать... Вот что удалось понять...... Здесь должен создаваться поток(CreateThread), который и будет выполнять сортировку.., а в интерфейсной части что-то типа этого: //interface while(1) { ... res=WaitForSingleObject(hSort,0); ... if (res==WAIT_OBJECT_0) { ...//exit Program } } //while Так вот я не пойму, как именно правильно организовать поток с функцией сортировки. и еще не совсем понятно, как можно с помощью выше приведенного куска кода организовать то, чтобы можно было прервать нажатием клавиши например, длительную операцию(если допустим мы ввели слишком большой размер массива) Сама сортировка производится, но без потока.....: Нечто типа: for n:=0 to 999 do for i:=0 to 999 do if Massiv[i]>Massiv[i+1] then begin buf:=Massiv[i+1]; Massiv[i+1]:=Massiv[i]; Massiv[i]:=buf; end; программе в консоле передается параметр размера. Это создано специально для организации второго консолного exe`шника, который будет использовать первый, и с помощью которого мы будем измерять время сортировки в зависимости от размера массива....но пока мне нужно понять как сделать первый модуль... |
|||
|
||||
| Самурай |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 20.10.2005 Где: Воронежская облас ть > Семилуки Репутация: 1 Всего: 1 |
А для чего мучаться? Вроде есть формулы, которые отражают "время" сортировки. Оно естественно не может полностью отразить ральный ход вещей, но для процентов очень сгодится. При этом не нужно ничего более, кроме одного приложения с циклом-сортировкой...
Добавлено @ 21:21 А почему использовать нужно именно консоль? В форме более приятно глазам будет отображение. Кстати, в этом случае для лучшего выполнения программы как раз потребуется стандартный поток TThread (или как там пишется). |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |