Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/23: Рейтинг темы: голосов - 23, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 13.03.2008
Сообщений: 3

Sleep внутри функции - перекрывает выполнение предыдущих строк

13.03.2008, 19:42. Показов 4465. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Набрел на проблему, никак не могу решить

в теле функции имеется:

C++
1
2
3
4
5
6
7
8
9
{
...
Label1->Caption = "что то там...";
SG_Color(x, y); //функция закрашивает ячейку в stringgrid по координатам.
 
Sleep(500);
 
... 
}
так вот, функция SG_Color выполняется без проблем в том месте где надо (до приостанова на 500мс), а вот метка значения своего на положенном этапе выполнения (до sleep) не меняет, а меняет его сразу после выполнения sleep... как это побороть, может кто знает, или подскажите где копать? Собственно задержка как раз для того и устроена чтобы пользователь увидел что в метке изменилось. Пробовал вынести изменение метки в функцию SG_Color, нифига, все остальное в функции выполняется, а метка как была остатется до окончания sleep, потом меняется.

Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2008, 19:42
Ответы с готовыми решениями:

Как замедлить выполнение for без Sleep
Хаюши умные дядьки такая проблема надо замедлить выполнение int qwe=10, asd=0, zxc=500; for...

Sleep внутри мьютекса
Может ли это как-то вешать программу, если да то почему?

Разработать функцию,которая перекрывает символы строки заданным количеством символов другой строки, начиная с заданной позиции
Разработать функцию,которая перекрывает символы строки заданным количеством символов другой строки,...

7
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
13.03.2008, 20:15
Может надо Application->ProcessMessages(); перед sleep'ом?
0
0 / 0 / 0
Регистрация: 13.03.2008
Сообщений: 3
13.03.2008, 20:28  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Может надо Application->ProcessMessages(); перед sleep'ом?
Уже думал, не помогает....
0
 Аватар для dioxidin
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
14.03.2008, 11:12
По-моему нельзя тут слипом вообще пользоваться... Если это не отдельный поток, а основной поток программы, то Caption получит новое значение, но форма перересуется только после выхода из слипа. Тоже самое бывает когда тяжкие вычисления загружают проц на все сто => для "перерисовки морды" время не выделяется.
Может стоит все, что ниже слипа, вынести в отдельную функцию или в тело таймера? Активируешь таймер, и все,что надо, выполнится с заданной задержкой.

Кстати, помоему опятже, вызов REPAINT для "морды" также наверняка не даст результата. Морда ведь спит
0
0 / 0 / 0
Регистрация: 13.03.2008
Сообщений: 3
14.03.2008, 14:22  [ТС]
Цитата Сообщение от dioxidin Посмотреть сообщение
Кстати, помоему опятже, вызов REPAINT для "морды" также наверняка не даст результата. Морда ведь спит
Спасибо! Помогло, перересовывает до sleep. Добавил после изменения метки перед sleep
Label1->Repaint();
0
 Аватар для dioxidin
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
15.03.2008, 17:23
Хе-хе... Я знал, что тут проблема в перерисовке... Идею выдал недолго думая. Опять осенило - надо было дожать, но не было времени...
0
1 / 1 / 0
Регистрация: 17.03.2008
Сообщений: 13
19.03.2008, 13:26
А ты попробуй так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
{
...
Label1->Caption = "что то там...";
SG_Color(x, y); //функция закрашивает ячейку в stringgrid по координатам.
 
for int i=0; i<50; i++)
{Application->ProcessMessages();
 Sleep(10);
}
 
... 
}
1
 Аватар для dioxidin
132 / 99 / 11
Регистрация: 21.11.2007
Сообщений: 544
20.03.2008, 10:24
Во-во... Может до проги не сразу доходит... По-моему вариант с принудительным вызовом repain'а самый "ничетак"... Я лично чаще его в литературе встречал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2008, 10:24
Помогаю со студенческими работами здесь

Виртуальная функция не хочет перекрываться
Возникла следующая ситуация, имеется базовый класс с виртуальной функцией, и два производных один с...

Функция sleep()
Добрый день! Помогите мне пожалуйста: Создать функцию sleep(), приостанавливающая работу...

В каком заголовочном файле находятся функции Sleep() и delay() и как правильно их использовать?
в каком хедере они находятся и как правильно их использовать Добавлено через 1 минуту дядя...

Помогите в правильном использовании функциq delay или sleep
вся проблема заключается в том что я не могу использовать таймер мне нужна одна из функций delay...

Функции Sleep() и Random()
В С++ Borland 3.1 функции Sleep() и Random() понятно и очень просто реализованы. Есть ли аналог...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru