Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2021, 18:30   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 624
По умолчанию Не правильный порядок действий при выполнении программы...

Есть вот такой вот код

Код:
    form3.Color:=cllime;

    for i:=0 to klv-1 do begin
     If (f3CheckBox[i].Checked) then begin
      MoveFile(PChar(str1[i]), PChar(str2[i]));
     end;
    end;
 
    form3.Color:=clBtnFace;
Вместо того чтобы сразу подсветить форму зеленым на время выполнения цикла, программа сначала выполняет перемещение файлов, после чего на мгновение моргает зеленым

Почему оно не подсвечивает сразу зеленым, перед перемещением файлов?
И как это исправить?

При чем, подобные сбои наблюдались и в других местах программы
Kronos913 вне форума Ответить с цитированием
Старый 01.04.2021, 18:43   #2
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 624
По умолчанию

Операционная система - 10ка
Delphi 7

p.s. Замечал, что у одной и той же программы бывает разное исполнение на 10 и ХРюше
Например, если поставить два таймера, один каждые 1000 мс прибавляет 1000 к одной переменной, а второй каждые 10 мс добавляет 10 к другой, то вот что выходит

На ХР таймеры будут параллельно работать, и показатели переменных будут примерно равны
А вот на 10ке таймер с 1000 будет раза в два быстрее прибавлять
Kronos913 вне форума Ответить с цитированием
Старый 01.04.2021, 18:44   #3
FrosyaZZ
Форумчанин
 
Регистрация: 16.11.2020
Сообщений: 243
По умолчанию

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
Почему оно не подсвечивает сразу зеленым, перед перемещением файлов?
Потому что обработка сообщение формы (в частности отрисовка) идет в этом же потоке. А команды выполняются последовательно.

Цитата:
Сообщение от Kronos913 Посмотреть сообщение
И как это исправить?
Сказать форме проапдейтиться.

Таймеры на разных версиях системы могут работать с разной точностью. Читайте справку майкрософта.
FrosyaZZ вне форума Ответить с цитированием
Старый 01.04.2021, 18:54   #4
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 624
По умолчанию

Единственный метод, который исправил проблему - это создать таймер с интервалом 1, переместить в него весь код после смены цвета. И активировать его после смены цвета формы

Но такие кустарные методы - как-то не очень...
Kronos913 вне форума Ответить с цитированием
Старый 01.04.2021, 18:55   #5
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 624
По умолчанию

Цитата:
Сообщение от FrosyaZZ Посмотреть сообщение
Сказать форме проапдейтиться.
Как это сделать?
Kronos913 вне форума Ответить с цитированием
Старый 01.04.2021, 18:59   #6
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 624
По умолчанию

При этом, в другой части этой же программы, только на первой форме:

Код:
  label3.Color:=ClRed;
  memo2.lines.clear;
  DirSearch(memo1.Lines[ind], memo2.Lines);
  label3.Color:=clBtnFace;
И работает все верно
Kronos913 вне форума Ответить с цитированием
Старый 01.04.2021, 18:59   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
Form3.Color := clLime;
Form3.Refresh;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 01.04.2021, 22:33   #8
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 624
По умолчанию

Спасибо. Все исправилось
Kronos913 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выполнении программы crymchanin Общие вопросы C/C++ 8 30.01.2013 15:37
Зависание при выполнении программы Танкист Общие вопросы Delphi 17 21.03.2012 19:00
ошибка при выполнении программы ST@LKER Общие вопросы C/C++ 8 03.12.2011 22:38
Ошибка при выполнении программы Гурам Общие вопросы Delphi 1 18.11.2010 18:53
При выполнении программы ошибка. Cyber Помощь студентам 12 02.10.2010 17:16