|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.05.2012, 11:35 | #1 |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Некорректно работает процедура обновления
Здравствуйте! Уважаемые гуру, прошу вашей помощи.
Наваял нечто вроде прогресс-бара. Каждая строка - это одна или неск процедур (см. скрин). Всё работает, кроме одного: не получается отображать в соответствующих полях на форме корректное время выполнения каждой из процедур. Выводит нули (проскакивает иногда, редко, - что-то типа 0,1 сек). Ставлю точку останова, иду по шагам - и когда переключаюсь из редактора в форму, всё замечательно: время напротив каждой строки (т.е. процедуры) на форме отображается, итоговое время (внизу справа на скрине) выполнения тоже. (Единственно что: округляется и всегда в меньшую сторону, например: 15,122 сек и 15, 871 в итоговом поле остаются пятнадцатью: то есть, 15 без десятичных знаков. Уважаемые профи, подскажите пожалуйста, что у меня не так, давно уже бьюсь... - DoEvents не помогает, куда только не втыкал. - Не помогает также и .requery (и остальные .re…). - Источник данных формы – пользовательская системная таблица (с единственной записью), в полях которой сохраняются настройки; указ поля не связаны с полями таблицы. - Файл выложить не могу – очень объёмный… |
20.05.2012, 11:39 | #2 |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Собственно листинг
Вот листинг (извините, не разобрался пока с тэгами...):
Код:
Последний раз редактировалось Stilet; 20.05.2012 в 13:23. |
20.05.2012, 13:41 | #3 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
Откуда же взяться долям секунды, если вы производите целочисленное деление ('\' вместо '/') при вычисление промежутка времени:
Код:
на неконкретные вопросы даю неконкретные ответы ...
|
20.05.2012, 15:34 | #4 |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Тьфуты :)
Согласен, спасибо.
Но главный сабж, собственно, не в палочке... |
20.05.2012, 15:40 | #5 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
так от сюда ноги ростут ... если у вас происходит одно обновление менее чем за секунду (в пошаговом больше), то при целочисленном делении получается 0. Затем это значение (из поля - целое число секунд) используется для вычисления общего времени ...
на неконкретные вопросы даю неконкретные ответы ...
|
20.05.2012, 16:00 | #6 | |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Ноу резалт :)
Цитата:
Всё по-прежнему (там, кстати, некоторые подпроцедуры выполняются по минуте) |
|
21.05.2012, 09:46 | #7 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
Собственно где в этом участке кода, замеряющего промежуток времени - вызов какой-либо процедуры? Вы замеряете время потраченное на присвоение ссылок на объекты для 4 переменных ...
Код:
на неконкретные вопросы даю неконкретные ответы ...
|
21.05.2012, 16:06 | #8 | |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Цитата:
Да, действительно, из этой процедуры другие не вызываются (я её так назвал для наглядности). А алгоритм такой. Есть довольно объемная основная процедура обновления справочников, со множеством вложенных подпроцедур. Вызов же этой по сути функции происходит между этими подпроцедурами. Входящий параметр - имя след процедуры. Схематично так: Sub Основная () ProgressBar ("Proc 1") Proc 1 Proc 2 ProgressBar (Proc 3) Proc 3 ... Еnd Sub Что делает эта функция (буду теперь называть её так). Она сохраняет в спец таблице (а также на связ с ней форме - видно на скрине) номер её вызова и имя след процедуры, переданного ей в кач параметра. По задумке, в случае сбоя обновления, при след его запуске - оно должно начаться именно с места последнего вынужденного останова. Повторю, что всё работает, кроме одного: отображения времени исполнения, прошедшего в период между вызовами этой функции |
|
21.05.2012, 16:33 | #9 | |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
Цитата:
Код:
на неконкретные вопросы даю неконкретные ответы ...
|
|
21.05.2012, 17:17 | #10 |
Форумчанин
Регистрация: 20.05.2012
Сообщений: 311
|
Супер!!!
Step_UA, вы монстр! У меня слов нет...
Товарищи модераторы, а как мне можно поставить ответившему прогеру реально заслуженные +50 ??? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Некорректно работает программа. | JIOBEJIAC | Помощь студентам | 0 | 19.12.2011 20:47 |
некорректно работает WaitForMultipleObjects | bazilior | Общие вопросы C/C++ | 2 | 17.04.2010 20:15 |
Некорректно работает запрос | zulu80 | БД в Delphi | 10 | 16.02.2009 13:35 |
IdHTTP1 некорректно работает | nike-p | Работа с сетью в Delphi | 9 | 23.07.2008 23:13 |