0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
1 | |
Долгий расчет больших циклов04.06.2016, 08:09. Показов 1451. Ответов 38
Метки нет (Все метки)
Здравствуйте! В Delphi 7 реально как-то сделать, чтобы большие циклы считались быстрее, а не целыми сутками?
0
|
04.06.2016, 08:09 | |
Ответы с готовыми решениями:
38
Расчет ряда с помощью циклов/процедур При обработке больших циклов форма с ProgressBar прорисовывается неполностью Долгий-долгий запрос... Как получить сумму и произведение циклов с использованием одной строки циклов |
04.06.2016, 18:22 | 21 |
Вам надо научиться:
И до сих пор Вы не удосужились вывести код в читаемом виде, так что рассматривать его дальше не вижу смысла.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
04.06.2016, 18:27 | 22 |
0
|
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
04.06.2016, 19:14 [ТС] | 24 |
А реально ли сделать такое в другом компоненте, если 1 и 0 заменить на разные два цвета?
0
|
04.06.2016, 20:07 | 25 |
блин. про белого бычка
пункт 1 ввести все, что вам нужно, в StringGrid пункт 2 из StringGrid ОДИН РАЗ перенести все в массив пункт 3 за несколько секунд все посчитается пункт 4 можете вернуть обработанные данные в Grid всё StringGrid ни под каким видом не должен участвовать в расчете от слова вообще сделайте отдельную процедуру, которая будет только работать с массивом если будет все правильно, но расчет будет занимать хоть сколько-то заметное время, можно эту процедуру без проблем оформить в отдельный поток
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
04.06.2016, 20:25 | 26 |
Если алгоритм включает в себя постоянное обновление информации на экране, то никакой компонент не поможет. Хоть текст туда выводи, хоть цвет.
0
|
05.06.2016, 00:23 | 27 |
представь себе, процессор обрабатывает 1000000 чисел в секунду
глазу достаточно 24 кадра в секунду одно обновление экрана занимает пусть 50мсек тогда 0.050 * 1000000 = 50000 сек только обновление экрана не жирно??? вместо одной секунды, если бы он не обновлялся... нормальный вариант прибегать к синхронизации каждые 500-1000 мсек и человеку не скучно, и программа не отвлекается
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.06.2016, 00:30 | 28 |
0
|
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
05.06.2016, 00:33 [ТС] | 29 |
Krapotkin, а как сделать эту синхронизацию?
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.06.2016, 00:40 | 30 |
Сначала объясни зачем тебе нужно видеть глазами как что-то меняется в StringGrid? А про синхронизацию тебе пока рано пояснять, ибо она имеет отношение к визуализации выполнения дополнительных потоков.
0
|
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
05.06.2016, 00:41 [ТС] | 31 |
я создал модель, там визуализируется хим. процесс
0
|
05.06.2016, 00:46 | 32 |
если данные не требуется вводить, а только рисовать, так и отрисовывайте свою модель вон на PaintBox или Image
расчет должен идти в отдельном потоке там в каждом цикле проверять, не прошло ли 300-500-1000 мсек с последнего рисования если прошло, то вызвать Synchrionize(Процедура_рисования_на_форме()); и запомнить текущее время например t:=GetTickCount();
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.06.2016, 01:03 | 33 |
В StringGrid визуализуется? Хм.
Согласен с krapotkin #32. Добавлено через 13 минут Хотя. Не знаю что за хим. процесс, но я бы попробовал бы использовать грид. Но не TStringGrid, а TDrawGrid. Но опять же вычисления выполняются в дополнительном потоке. И промежуточные результаты показываются либо по временному интервалу, либо по существенным изменениям в процессе.
0
|
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
05.06.2016, 01:06 [ТС] | 34 |
Но я не пойму, как в DrawGrid проверить два соседних цвета, например, если ячейка зеленая и рядом желтая, то перекрасить обе эти ячейки в белый.
0
|
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
|
|
05.06.2016, 01:15 | 35 |
Блин!
Только самые лентяйные лентяи тебе не говорили, что грид (StringGrid/DrawGrid) должен использоваться только для визуализации! Все расчеты ты должен производить на отдельном двумерном массиве.
0
|
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
02.07.2016, 10:59 [ТС] | 37 |
Всем большое спасибо! Уже давно сделал через массивы, и все работает намного быстрее, в разы быстрее. Всем спасибо!!!
0
|
49 / 49 / 34
Регистрация: 16.02.2016
Сообщений: 277
|
|
02.07.2016, 13:46 | 38 |
организуй свой цикл на ассемблере и сделай ассемблерную вставку в код
и где решение? https://www.cyberforum.ru/post9323828.html
0
|
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 31
|
|
02.07.2016, 13:48 [ТС] | 39 |
На Ассемблере и вставить код - это я вряд ли пойму. Да я сразу делал изначально в StringGrid, а потом рассчеты делал в цикле и просто выводил в StringGrid изменения.
0
|
02.07.2016, 13:48 | |
02.07.2016, 13:48 | |
Помогаю со студенческими работами здесь
39
Долгий старт Долгий макрос Getbykey долгий Долгий запрос Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |