Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
1

Как реализовать экран загрузки (без фризов) при выполнении программой долгого цикла?

08.05.2014, 17:36. Показов 1506. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
3) Как реализовать экран загрузки (без фризов) при выполнении программой долгого цикла?
Delphi XE5
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2014, 17:36
Ответы с готовыми решениями:

Как реализовать паузу в выполнении цикла
Здравствуйте! Подскажите пожалуйста как реализовать паузу в выполнении цикла. Суть задачи в...

При перемещении курсора слишком нагружается ЦП. При игре от 1 и 3 лица мышь не может(без фризов) повернуть перса
Здравствуйте. Столкнулся с интересной проблемой. При перемещении курсора по рабочему столу, самом...

Как сделать чтобы при выполнении цикла программа не зависала
Люди, подскажите. Есть цикл от 0 до 100000 , заполняю таблицу, короче замудреная операция! Как мне...

Непонятки с программой при выполнении..
Добрый вечер! Поясните пожалуйста если не сложно почему возникает такая проблема при выполнении...

16
1 / 1 / 0
Регистрация: 20.04.2014
Сообщений: 51
08.05.2014, 23:24 2
Хм.. Если я всё правильно понял, то почему бы не сделать прогресс бар?
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 11:06  [ТС] 3
Потому что он тоже глючит. Я уже пытался вся программа зависает пока цикл не закончится
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
09.05.2014, 11:06 4
вынести процесс загрузки в отдельный поток.
про потоки в этой теме полно за прошлую неделю
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
09.05.2014, 11:16 5
Цитата Сообщение от jek600 Посмотреть сообщение
при выполнении программой долгого цикла
Покажи долгий цикл.
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 12:27  [ТС] 6
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
26
27
28
29
30
31
32
procedure LoadWorld;
var
i,n:integer;
K:char;
begin
AssignFile(filee,link);
reset(filee);
for i:=0 to 50 do
for n := 0 to 100 do
begin
read(filee,k);
if (k='a') or (k='A') or (k=' ') then begin B[i,n].TypeF:=air; b[i,n].TypeB:='..\res\air.png'; end;
if (k='s') or (k='S') then begin b[i,n].TypeF:=solid; b[i,n].TypeB:='..\res\stone.png'; end;
if (k='d') or (k='D') then begin b[i,n].TypeF:=solid; b[i,n].TypeB:='..\res\dirt.png'; end;
if (k='g') or (k='G') then begin b[i,n].TypeF:=solid; b[i,n].TypeB:='..\res\grass.png'; end;
end;
closefile(filee);
for i:=0 to 50 do
for n:= 0 to 100 do
begin
B[i,n].i:=TImage.Create(form1);
B[i,n].i.Parent:=Form1;
b[i,n].i.Height:=32;
b[i,n].i.Width:=32;
B[i,n].i.Position.X:=n*32;
b[i,n].i.Position.Y:=i*32;
b[i,n].i.MultiResBitmap.Bitmaps[1].LoadFromFile(b[i,n].TypeB);
end;
form1.Button1.Text:=floattostr(player.Px)+' '+floattostr(player.Py);
form1.PlayerD.Position.X:=player.Px;
form1.PlayerD.Position.Y:=player.Py;
end;
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
09.05.2014, 12:35 7
Лучший ответ Сообщение было отмечено jek600 как решение

Решение

Добавь в цикл:
Delphi
1
Application.ProcessMessages;
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 12:40  [ТС] 8
что это?
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
09.05.2014, 13:02 9
Цитата Сообщение от jek600 Посмотреть сообщение
что это?
Антифриз.
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 13:35  [ТС] 10
FIL, Не работает всё равно зависон
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
09.05.2014, 13:42 11
Цитата Сообщение от jek600 Посмотреть сообщение
Не работает всё равно зависон
Куда именно добавил?
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 13:43  [ТС] 12
В начало процедуры
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
09.05.2014, 13:46 13
Цитата Сообщение от jek600 Посмотреть сообщение
В начало процедуры
А сказано было добавить в цикл.
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 13:51  [ТС] 14
А будет ли одновременно с этим работать таймер?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
09.05.2014, 13:52 15
Цитата Сообщение от jek600 Посмотреть сообщение
А будет ли одновременно с этим работать таймер?
Будет.
0
1 / 1 / 0
Регистрация: 20.04.2014
Сообщений: 51
09.05.2014, 21:31 16
Может ты просто что-то неправильно делаешь? Прогресс бар должен работать
0
5 / 5 / 1
Регистрация: 08.05.2014
Сообщений: 61
09.05.2014, 21:32  [ТС] 17
radion111, вторую страницу смотри.
у меня всё работает теперь.
0
09.05.2014, 21:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2014, 21:32
Помогаю со студенческими работами здесь

Как реализовать постепенный вывод на экран по ходу цикла?
Приветствую!! Столкнулся с такой проблемой, программа при расчете выдает сразу весь массив данных,...

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

Процесс загрузки цикла без перезагрузки страницы
В общем, написал Mail Bomber. index.php: <html> <head> <title>Online Mail Bomber</title>...

++i и i++ разница при выполнении цикла
Доброго времени суток! Действительно ли в цикле вида: for(int i = 0; i < n; ++i) {} ++i Будет...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru