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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2014, 14:55   #21
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Помню, некогда на одной из моих работ пытались учесть производительность труда программиста количеством строк в программе. Был ударником, поскольку одна из разрабатываемых прог в тот момент была на ассемблере и достаточна большущая.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.02.2014, 15:16   #22
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Меня в этом коде больше интересовала методика корректной перерисовки лэйблов. Сдаётся мне, что
Код:
procedure RedrawControl(ALabel: TLabel);
begin
  ALabel.Repaint;
  ALabel.Refresh;
end;
Не самое оптимальное решение. Но к сожалению другого метода перерисовки я не нашёл. Контролы начинали расплываться, и менять "жирность". Ну и собственно по итогу понял, что в программах такого типа расчёты нужно вести не внутри OnWork, а выводить в отдельный таймер. Это позволит более плавно менять показатели без раздражающих скачкообразных изменений.
doktor255 вне форума Ответить с цитированием
Старый 18.02.2014, 15:31   #23
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

А зачем? При установке значения, визуальный контрол сам перересуется.
Цитата:
Ну и собственно по итогу понял, что в программах такого типа расчёты нужно вести не внутри OnWork, а выводить в отдельный таймер. Это позволит более плавно менять показатели без раздражающих скачкообразных изменений.
Все проще Об этой проблеме подумали и придумали двойную буфферизацию(свойство DoubleBuffered).
Человек_Борща вне форума Ответить с цитированием
Старый 18.02.2014, 15:45   #24
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А зачем? При установке значения, визуальный контрол сам перересуется.
Хрена. Возникшие проблемы описал выше. Начинает меняться жирность шрифта, расплываться буквы, появляться артефакты даже за пределами окна приложения

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Все проще Об этой проблеме подумали и придумали двойную буфферизацию(свойство DoubleBuffered).
Аналогично хрена. Буферизацию включил самой первой. До лампочки. индя слишком быстро выдаёт данные, и стандартные ухищрения не помогают лэйблу. Application.Processmesages так же до лампочки. А вообще в процитированном сообщении речь шла не о мерцании, как в отключенной буферизации, а об быстрой смене значений (до 50 значений в секунду), которые при такой частой смене перестают нести полезную информацию. В общем нужно добавлять искусственную инерцию.

Последний раз редактировалось doktor255; 18.02.2014 в 15:56.
doktor255 вне форума Ответить с цитированием
Старый 18.02.2014, 16:40   #25
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
В виду того, что топикстартер оказался жмотом, выкладываю решение на халяву так сказать. А чтоб не скучно было изучать, в архиве только pas.
Тебе лиж-бы впарить какой то говнокод новичкам, барыга. Помощничек.
STRELOK-2007 вне форума Ответить с цитированием
Старый 18.02.2014, 16:46   #26
STRELOK-2007
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 144
По умолчанию

По теме, используй Synapse и событие onStatus

Больше чем подробно, описано здесь:
http://www.webdelphi.ru/2011/07/bibl...-pas/#onstatus

А скорость, время...
Ну можно засечь начальную дату и время, ввести переменную сколько скачалось (хотя она и так будет, чтобы отображать прогресс).
Дальше:
сколько скачено[в байтах] / (Дата конца - дата начала)[в секундах]

и будет тебе значение сколько байт/сек. Перевести в кб, мб, гб - ноу проблем.
STRELOK-2007 вне форума Ответить с цитированием
Старый 18.02.2014, 17:08   #27
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
В общем нужно добавлять искусственную инерцию.
Проще проверять не изменилось ли значение.

На Synapse в THTTPSendEx есть и размер и скорость и время.
Человек_Борща вне форума Ответить с цитированием
Старый 18.02.2014, 17:22   #28
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от STRELOK-2007 Посмотреть сообщение
Тебе лиж-бы впарить какой то говнокод новичкам, барыга. Помощничек.
Переход на личности запрещён. На запреты класть? Продолжай в том же духе.
Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Проще проверять не изменилось ли значение.
Значение изменилость +100500 раз за секунду. Толку от такой проверки?

Последний раз редактировалось doktor255; 18.02.2014 в 17:26.
doktor255 вне форума Ответить с цитированием
Старый 18.02.2014, 17:41   #29
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Толку от такой проверки?
Своевременное обновление значения.
Задержка пусть даже с пингом в 4 мс уже не потребудет перерисовки руками.

Цитата:
Тебе лиж-бы впарить какой то говнокод новичкам, барыга. Помощничек.
Там рабочий код и отнюдь не индусский, писался на коленке. Яуказал на фееричную переключалку комнтролов ради лулзов, не более. У всех бывает, не для себя же писал(автор кода).

Вам сказали как сделать, вам повторили ПО полностью, вам даже исходник скинули "за так", а вам все не то. Вывод - проблемы нет, вам просто лень поднять ж*** и что-то сделать.

Последний раз редактировалось Человек_Борща; 18.02.2014 в 17:49.
Человек_Борща вне форума Ответить с цитированием
Старый 18.02.2014, 17:49   #30
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Своевременное обновление значения.
Задержка пусть даже с пингом в 4 мс уже не потребудет перерисовки руками.
Боюсь пинг тут не при чём. Допустим скорость загрузки 10 мегабит (1 мегабайт). Индя может выдать до пары тысяч значений за секунду. Естественно такой поток данных нельзя отправлять непосредственно в label. Насколько я понимаю, грамотнее отправлять значение в глобальный Integer, а в каком нибудь таймере уже с нормальной скоростью брать промежуточные значение Integer, ну и дальше работать с ним. В общем как-то так...

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Вам сказали как сделать, вам повторили ПО полностью, вам даже исходник скинули "за так", а вам все не то
Чуть чуть перепутал. Не он просил примеры. Просто не удовлетворён от того, что я его послал за то, что он попытался поймать меня на слабо в теме по выдиранию/замене иконок. Но не суть. Я не обижаюсь. Сам не ангел.

Последний раз редактировалось doktor255; 18.02.2014 в 18:20.
doktor255 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка картинки перед отображением Abuhamed JavaScript, Ajax 1 02.04.2012 20:01
Проблемы с отображением содержимого res файла Gamst Общие вопросы Delphi 1 26.05.2010 16:50
Программирование с отображением графической информации Takada_sony Помощь студентам 10 06.04.2010 23:07
Программирование с отображением графической информации(Delphi). Snord Помощь студентам 5 18.12.2007 20:53
Сохранение и загрузка информации Slash Общие вопросы Delphi 9 04.02.2007 22:01