powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
64 сообщений из 64, показаны все 3 страниц
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108950
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!



Перешла с Delphi 7 на Delphi XE8 после 15 лет работы на Delphi 7.

В некотором ужасе от непривычности новой среды разработки - те действия, что в Delphi 7 были элементарными - на XE-8 превращаются в целый квест.



1) Отладчик какой-то странный - вместо того, чтобы нормально пройтись по коду - скачет где захочет.

Например, надо пройтись по процедуре SendEMail - так просто по шагам как в Delphi 7 не получается - отладчик периодически уходит в какие-то левые модули, в D7 такого небыло. Да, у меня в программе много разных таймеров. Можно ли как-то настроить отладчик - чтобы не уходил в определённые модули? Например, запретить ему уходить в модули VCL и в некоторый список из моих модулей?

Может, как-то можно отиключить все таймеры в программе (не трогая при этом саму программу) чтобы Delphi по ним не прыгала?

Как запретить прыгать по потокам - разобралась уже - хотя это тоже было неприятно.

Да, про отличие F7 и F8 в курсе - но похоже, тут дело не в этом.



2) Не получается открыть файл проекта dpr для правки. Казалось бы, в Delphi 7 делалось элементарно.

File--Open-->

*.dpr набираем в поле

выбираем файл проекта

Выбираем тип файла

Delphi unit (*.pas)

и нормально открываем

В Delphi XE8 так не получается, приходится открывать файл dpr в Блокноте, портить код чтобы была синтаксическая ошибка и тогда Delphi при нажатии F9 уже показывает данный файл.



3) Панели разные занимают слишком много места на экране. Object Inspector, Project Manager и прочее. Никак не получается уменьшить. Я понимаю конечно, что нужно работать в разрешении 1920 на 1080, а правильные программы должны подстраивать шрифт под разрешение - но на практике это отнюдь не так, программы многие игнорируют разрешение и показывают на экране мелочь при 1920 на 1080, хочется работать при меньшем разрешении экрана, по-другому глаза не позволяют.

Как уменьшить шрифт и размеры панелей? Как уменьшить шрифт в редакторе кода худо-будно разобралась, но этого, увы, недостаточно для комфортной работы.



P. S. Про статью GunSmoker на эту тему в курсе, читала - но эти вопросы там не раскрыты ...
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108955
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Use Debug DCU = False.

2. "View Source" на проекте.

3. Докируй панели друг в друга. Используй классическую панель компонентов вместо новой.

http://www.rgreat.ru/tmp/Delphi/Clipboard02.png
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108956
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
вместо того, чтобы нормально пройтись по коду - скачет где захочет.
Приложение многопоточное?
Наталья87
уходит в какие-то левые модули
В левые модули уходить не может, только в используемые
Наталья87
Да, у меня в программе много разных таймеров
Таймеры бывают разные. Какие у вас?
Наталья87
чтобы не уходил в определённые модули?
В начале модуля написать
Код: pascal
1.
{$D-}


Наталья87
запретить ему уходить в модули VCL
Снять галку Use debug DCUs
Наталья87
2) Не получается открыть файл проекта dpr для правки
Меню Project -> View Source
Наталья87
. Никак не получается уменьшить
Как это?
Наталья87
Как уменьшить шрифт и размеры панелей?
Мышкой схватить за край и уменьшить
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108958
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87

3) Панели разные занимают слишком много места на экране. Object Inspector, Project Manager и прочее. ...

Не знаю, кто как делает, у меня все боковые панели, кроме Object Inspector - скрывающиеся (обычно).
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108968
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПриложение многопоточное?

Да

авторТаймеры бывают разные. Какие у вас?

TTimer

авторВ начале модуля написать
Код: pascal
1.
 {$D-}



Спасибо

автор
Наталья87
запретить ему уходить в модули VCL
Снять галку Use debug DCUs

Немного по-другому называется, спасибо нашла отключила

автор
Наталья87
2) Не получается открыть файл проекта dpr для правки
Меню Project -> View Source

Гениально просто ...

автор
Наталья87
. Никак не получается уменьшить
Как это?
Наталья87
Как уменьшить шрифт и размеры панелей?
Мышкой схватить за край и уменьшить
[/quote]

Так ведь ничего не прочитать будет. Шрифт-то не уменьшается.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108996
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

мне интересно, чем аргументируется переход на глубоко устаревшую версию делфи, когда есть бесплатная 10.4.2 CE?
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108997
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2,

"бесплатная"? :)
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40108998
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
TTimer
TTimer может работать только в главном потоке. Если у вас при отладке кода происходит переход в обработчик OnTimer, значит у вас вызывается Application.ProcessMessages. А теперь вопрос - зачем вы его вызываете?
Наталья87
Шрифт-то не уменьшается.
А можно скриншот?
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109019
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quote автор]
_Vasilisk_
Наталья87
TTimer
TTimer может работать только в главном потоке. Если у вас при отладке кода происходит переход в обработчик OnTimer, значит у вас вызывается Application.ProcessMessages. А теперь вопрос - зачем вы его вызываете?


Чтобы программа не зависала при длительных операциях. Без Application.ProcessMessages работа с программой станет некомфортной для пользователя. Кстати, если даже вызвать обычный ShowMessage без Application.ProcessMessages - всё равно отладчик ускачет в обработки TTimer.

Отключать вручную все таймеры в программе ради отладки как-то не хочется.

Так что этих Application.ProcessMessages в программе очень много и от них не уйти. Но в Delphi 7 это не приводило к тому, чтобы отладчик скакал по таймерам, а в XE-8 скачет отсюда и вопрос как запретить отладчику прыгать именно по таймерам.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109029
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87Чтобы программа не зависала при длительных операциях.

Вменяемые программисты используют для этого потоки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109031
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87,

может это поможет
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109054
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Наталья87Чтобы программа не зависала при длительных операциях.

Вменяемые программисты используют для этого потоки.


Потоки уже и так используются, их в программе пара десятков штук. Не всё удобно делать на потоках, часто нужно чтобы код выполнялся именно в главном потоке.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109056
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Не всё удобно делать на потоках, часто нужно чтобы код выполнялся именно в главном потоке.

Выбирайте либо "удобно" вам, либо юзеру.

Хотя отлаживать потом код с кучей Application.ProcessMessages - это тоже то еще "удобство".
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109102
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Наталья87
Не всё удобно делать на потоках, часто нужно чтобы код выполнялся именно в главном потоке.

Выбирайте либо "удобно" вам, либо юзеру.

Хотя отлаживать потом код с кучей Application.ProcessMessages - это тоже то еще "удобство".


Юзеру удобнее как раз чтобы код выполнялся в главном потоке - не такой уж это сложный код в главном потоке, чтобы тормозить компьютер. Потому что если делать в несколько потоков - потом в итоге все глючит и работает еще медленнее, чем одним потоком.

Таймеры наверное можно отключить создав наследника класса TTimer и подключив его во все формы. Но хотелось бы как-то стандартными средствами отладчика настроить чтобы код не гулял по таймерам. Как сделать чтобы отладчик не гулял по потокам в принципе уже понятно - осталось с таймерами разобраться.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109103
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Наталья87
Не всё удобно делать на потоках, часто нужно чтобы код выполнялся именно в главном потоке.

Выбирайте либо "удобно" вам, либо юзеру.

Хотя отлаживать потом код с кучей Application.ProcessMessages - это тоже то еще "удобство".


Так причем тут конкретно Application.ProcessMessages? Достаточно показать обычное ShowMessage или что либо еще графическое, диалог юзеру какой-нибудь и Application.ProcessMessages уже автоматом выполнится (и отладчик пойдет гулять по таймерам - удивительным образом D7 так не делал)? Даже если старательно из программы это вычистить.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109105
zedxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наталья87
Потому что если делать в несколько потоков - потом в итоге все глючит и работает еще медленнее, чем одним потоком.

Похоже, кому-то надо срочно прокачать скилы многопоточного программирования.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109121
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Так что этих Application.ProcessMessages в программе очень много и от них не уйти.
Есть две функции, которые вызывать не нужно никогда. Вообще никогда. Это Application.ProcessMessages и Sleep
Наталья87
Чтобы программа не зависала при длительных операциях.
Для этого, внезапно, используются потоки
Наталья87
Кстати, если даже вызвать обычный ShowMessage без Application.ProcessMessages - всё равно отладчик ускачет в обработки TTimer.
Что логично. Потому что запустится обработка очереди сообщений.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109150
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Sleep

Я иногда пользуюсь.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109212
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
_Vasilisk_
Sleep
Я иногда пользуюсь.
Единственное адекватное применение - какие-то тестовые приложения. Всё.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109215
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Заменять короткие Sleep на что-то типа WaitForSingleObject - довольно громоздко и не то что бы сильно важно.

Перфекционизм это.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109217
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
FreeAdman
пропущено...
Я иногда пользуюсь.
Единственное адекватное применение - какие-то тестовые приложения. Всё.


При переборке файлов из каталогов почему нельзя применить sleep(10), например, для уменьшения нагрузки на диск чтобы другим приложением не было так тесно, например, на сервере? :)

Или всё-таки предлагаете такое дело вынести в отдельный поток, а таймером его приостанавливать \ возобновлять? :))

Ну, ок. А если у нас прога по бэкапу и в конфиге задано чёткое количество копируемых файлов в секунду, например, 20 файлов, то с примененим sleep гораздо проще, чем отсчитать счётчик до 20 и послать сигнал на приостановку потока - этож сплошная куча ненужного говнокода.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109218
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanПри переборке файлов из каталогов почему нельзя применить sleep(10), например,
для уменьшения нагрузки на диск чтобы другим приложением не было так тесно,
например, на сервере? :)

Потому что диск невообразимо медленнее процессора и 10 миллисекунд ничего не
дадут. Если хочется уменьшения нагрузки - надо понижать приоритет своего
ввода-вывода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109222
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
FreeAdmanПри переборке файлов из каталогов почему нельзя применить sleep(10), например,
для уменьшения нагрузки на диск чтобы другим приложением не было так тесно,
например, на сервере? :)

Потому что диск невообразимо медленнее процессора и 10 миллисекунд ничего не
дадут. Если хочется уменьшения нагрузки - надо понижать приоритет своего
ввода-вывода.

А причём тут ЦП?
Вы снова глупости пишите. Приоритет ввода-вывода и приостановка работы на n время — это не одно и тоже.

Ибо во втором случае диск не нагружен на 100% в общем и целом. Вам же не объяснить элементарные моменты.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109224
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanПриоритет ввода-вывода и приостановка работы на n время — это не одно и тоже.

Да. Потому что второе не решает проблему нагрузки на сервер. Но вам же всё равно...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109226
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
FreeAdmanПриоритет ввода-вывода и приостановка работы на n время — это не одно и тоже.

Да. Потому что второе не решает проблему нагрузки на сервер. Но вам же всё равно...

Я писал когда-то такую утилиту на Лазарусе хз сколько лет назад, и знаете чего? — Всё работает без проблем нагрузки на сервер. Я бы даже сказал: шикарно работает. А вам бы больше учиться, да меньше поучать.

А если софт работает на виртуалке - Ваш приоритет до одного места.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109230
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
FreeAdman
пропущено...
Я иногда пользуюсь.
Единственное адекватное применение - какие-то тестовые приложения. Всё.
Да если бы: недавно решали проблему с тем, что глючила (переставала отвечать) аппаратура, с которой работала наша программа. Проблему решила команда sleep(10) перед отправкой пакета (нигде в документации на аппаратуру и протоколы с ней не были указаны никакие задержки). Ну, и sleep(0) тоже иногда пользу приносить может.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109237
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010нигде в документации на аппаратуру и протоколы с ней не были указаны никакие
задержки

А контроль потока был там указан? Обычно такие трюки нужны когда его забывают
включать/распаивать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109243
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок. Все против Sleep. Но никто не объяснил почему :)

bk0010
недавно решали проблему с тем, что глючила (переставала отвечать) аппаратура, с которой работала наша программа.

И это была ЭЭГ в клинике
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109248
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanВсе против Sleep. Но никто не объяснил почему :)

Потому что в GUI приложениях главный поток должен непрерывно обрабатывать
приходящие сообщения. Sleep этому мешает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109250
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Дык! Я то думал, речь идёт об отдельных потоках. С GUI ясен пень.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109252
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanЯ то думал, речь идёт об отдельных потоках.

А отдельные потоки создаются для того чтобы они работали, а не спали. Если им
нечего делать - они должны либо завершиться, либо ожидать сигнала к завершению
или новой работе. Sleep этому мешает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109253
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, от ситуации. Бывает надо паузу вставить чтобы не молотило когда в том нет необходимости
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109255
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanБывает надо паузу вставить чтобы не молотило когда в том нет необходимости

В этом случае поток должен ожидать сигнала к завершению или продолжению работы.
Sleep этому мешает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109263
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
FreeAdmanБывает надо паузу вставить чтобы не молотило когда в том нет необходимости

В этом случае поток должен ожидать сигнала к завершению или продолжению работы.
Sleep этому мешает.

Вы будто ограничены. Почему бы не научиться смотреть шире? А потом я задаюсь вопросом, почему современное ПО такое паршивое... Да потому что "я просто ехал прямо"
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109265
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanА потом я задаюсь вопросом, почему современное ПО такое паршивое...

А зачем задаваться вопросом с так очевидным ответом "всё хз сколько лет работает
без проблем"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109271
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
FreeAdmanА потом я задаюсь вопросом, почему современное ПО такое паршивое...

А зачем задаваться вопросом с так очевидным ответом "всё хз сколько лет работает
без проблем"?

Раньше (лет эдак 15-20+) как-то больше уделяли внимание мелочам и были ближе к железу, ибо вынуждены были разбираться как всё работает и, представьте себе, даже головой соображать.

Сейчас поди спроси у новых кодеров, не так давно выползших с пелёнки, чавой такое стэк или почему прога получает отказ при попытке зарезервировать цельным куском свободную, но фрагментированную память, не говоря уже за заоблачные вопросы на которые даже распальцованые дяди ответить не могут чётко.

Сейчас куча фреймворков, конструкторов, всё само выделяет, следит, освобождает. С++ вообще считаю конченым - чем больше проект, тем засранее он становится в космических масштабах.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109272
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, да и раньше кодер был и сам себе тестировщиком, а сейчас уже не нужно об этом заботиться, ибо есть тестировщики на зарплате, а следовательно можно особо и не напрягаться головой :)
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109275
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanРаньше (лет эдак 15-20+) как-то больше уделяли внимание мелочам и были ближе к
железу, ибо вынуждены были разбираться как всё работает и, представьте себе,
даже головой соображать.

Нет, ни 15, ни 20, ни даже 25 лет назад ничего такого среди дельфинов не
наблюдалось.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109276
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
Почему бы не научиться смотреть шире?
Приведите пример, когда поток нужно остановить строго на указанное время (попутно вспоминаем, что Windows - это не RTS), причем так, чтобы он перестал отвечать на любые внешние воздействия?
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109277
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, а причём тут конкретно дельфины? Если речь о программистах в общем.

Да и к тому же в Дельфях вполне использовались ассемблерные вставки время от времени, поди расскажи мне что 20 лет назад про стэк никто не знал
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109278
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanподи расскажи мне что 20 лет назад про стэк никто не знал

При чём тут стэк? Мемы "бесформенная форма" или "туда где часики", Вам,
очевидно, ничего не говорят?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109279
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
FreeAdman
Почему бы не научиться смотреть шире?
Приведите пример, когда поток нужно остановить строго на указанное время (попутно вспоминаем, что Windows - это не RTS), причем так, чтобы он перестал отвечать на любые внешние воздействия?


Так то в целом это не нужно никогда. Бывает, когда задача ёмкая на несколько часов, например, и в быстром выполнении тоже нужды нет, достаточно чтобы поток попросту висел и тихонько выполнял задачу, при том не грузил ядро на 100% или диск или Бог знает что ещё.

Или, например, в неком цикле ожидание освобождение некого ресурса чтобы его вновь занять, зачем такому циклу молотить 10 млн раз в секунду и вешать ядро, если это не критично? Как его притормозить? Только не говорите, что надо таймер использовать

Dimitry Sibiryakov
FreeAdmanподи расскажи мне что 20 лет назад про стэк никто не знал

При чём тут стэк? Мемы "бесформенная форма" или "туда где часики", Вам,
очевидно, ничего не говорят?..

Угу. Я неуч. Мне лишь бы поумничать :)
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109282
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman,

К Sleep в потоке только одна претензия, он внутри себя на Thread.Terminated не проверяет.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109284
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
FreeAdman,

К Sleep в потоке только одна претензия, он внутри себя на Thread.Terminated не проверяет.


Никогда с этим не сталкивался т.к. завершал потоки немного иначе, и Sleep отрабатывал, а после завершал, если так нужно было, иначе зачем создавать поток для управления другим потоком?
Должна быть синхронизация и порядок, а не хаос и беспорядок.

Если в потоке вы что-то вызвали - будьте добры, дайте ему завершиться, или же заранее предусмотрите корректную останову потока :)
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109286
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
Никогда с этим не сталкивался т.к. завершал потоки немного иначе
Как?
и Sleep отрабатывал, а после завершал, если так нужно было, иначе зачем создавать поток для управления другим потоком?
Должна быть синхронизация и порядок, а не хаос и беспорядокТак пока слип не отработает, поток штатно не завершится.
Если слип короткий - это не проблема, просто немного не красиво.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109287
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rgreat
Так пока слип не отработает, поток штатно не завершится.
Если слип короткий - это не проблема, просто немного не красиво.

Зависит от ситуации. Но больших слипов я никогда не применяю, вместо них я использую таймеры или ивенты - снова же от ситуации
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109288
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
быстром выполнении тоже нужды нет, достаточно чтобы поток попросту висел и тихонько выполнял задачу, при том не грузил ядро на 100% или диск или Бог знает что ещё.
Код: pascal
1.
ThreadPriority := tpLowest;



FreeAdman
Или, например, в неком цикле ожидание освобождение некого ресурса чтобы его вновь занять,
Код: pascal
1.
EnterCriticalSection()/WaitForSingleObject(Mutex, INFINITE)/WaitForMultipleObjects([Mutex, ExitEvent], INFINITE)


FreeAdman
Только не говорите, что надо таймер использовать
Какой таймер, если цель получить ресурс, а не подождать n-секунд?
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109290
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Код: pascal
1.
ThreadPriority := tpLowest;


До вас не достучаться. Вы за своё и флаххх вам фф рукки.

_Vasilisk_

Код: pascal
1.
EnterCriticalSection()/WaitForSingleObject(Mutex, INFINITE)/WaitForMultipleObjects([Mutex, ExitEvent], INFINITE)


А если это array[i].FreeBool ? Или ещё что?

_Vasilisk_

FreeAdman
Только не говорите, что надо таймер использовать
Какой таймер, если цель получить ресурс, а не подождать n-секунд?


Здесь никаких таймером, очевидно. Вы не улавливаете мысли в диалогах, читаете между строк.
Во-вторых, ждёт - это Sleep, а таймер - делает через интервал. Почувствуйте разницу.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109293
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Код: pascal
1.
ThreadPriority := tpLowest;



Парню, у которого подвис с оборудкой был, очень бы помог этот совет
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109295
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman,

Это не совет, это диверсия.

Если чтото займет процессор поток просто работать нормально не будет.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109296
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bk0010
_Vasilisk_
пропущено...
Единственное адекватное применение - какие-то тестовые приложения. Всё.
Да если бы: недавно решали проблему с тем, что глючила (переставала отвечать) аппаратура, с которой работала наша программа. Проблему решила команда sleep(10) перед отправкой пакета (нигде в документации на аппаратуру и протоколы с ней не были указаны никакие задержки). Ну, и sleep(0) тоже иногда пользу приносить может.


Подозреваю, что оборудка попросту не успевала отдуплять за командиром. ПО должно синхронизироваться с железякой, опрашивать на готовность выполнить команду и те самые 10мс ожидания видимо хватило на прийти в готовность принять новые данные.

А вообще это не очень хорошо. В какой-то момент тоже может подвиснуть в редких случаях, а потом искать закономерность рандомную :)
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109297
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanПарню, у которого подвис с оборудкой был, очень бы помог этот совет

Тот парень удовлетворился костыликом и так и не ответил на вопрос о контроле
потока. Ему не нужна помощь, его вполне устраивает "современное паршивое ПО",
которое "годами как-то работает без проблем".

rgreatЕсли чтото займет процессор поток просто работать нормально не будет.

Ну так у него в ТЗ написано "чтобы поток попросту висел и тихонько выполнял
задачу". Ничего про "нормальную работу" нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109298
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Все потому, что у вас с програмистов за расход электроэнергии не вычитают.... ;)
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanНу, давайте начнём с того, что мой поток контролируемый, Акей?

Нет, давайте начнём с того, что вы скажете называете ли в данном случае
"потоком" thread или stream. У "того парня" это был stream, причём, вероятнее
всего, с RS-232 или ему подобных.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109302
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Нет, давайте начнём с того, что вы скажете называете ли в данном случае
"потоком" thread или stream.

Thread. Речь то идёт о параллельном выполнении. К чему Stream пришивать? Чтож вы за люди такие
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109306
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdmanК чему Stream пришивать?

К тому, что там именно проблемы со stream были решены искусственной задержкой
посылки в него (stream) данных. Как Вы умудрились перейти от него к thread -
непонятно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109313
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
Dimitry Sibiryakov, да и раньше кодер был и сам себе тестировщиком, а сейчас уже не нужно об этом заботиться, ибо есть тестировщики на зарплате, а следовательно можно особо и не напрягаться головой :)
Зацепила фраза... Гон несусветный. Никогда разработчик не сможет оттестировать свою поделку адекватно. Обязательно должны быть тестировщики. А уж кто ими будет, специально обученные люди или конечные пользователи...
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109315
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
А контроль потока был там указан? Обычно такие трюки нужны когда его забывают
включать/распаивать.
Нет
Dimitry Sibiryakov
Нет, давайте начнём с того, что вы скажете называете ли в данном случае
"потоком" thread или stream. У "того парня" это был stream, причём, вероятнее
всего, с RS-232 или ему подобных.
Нет, там по Ethernet идет взаимодействие с железякой, которая реализует взаимодействие с несколькими промышленными интерфейсами (типа GPIB, но и Ethernet тоже есть) , к которой и подключается аппаратура. Аппаратур несколько, но подобная проблема возникла только на одной. Передающий поток - отдельный, программа на Qt.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109326
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bk0010

Dimitry Sibiryakov
У "того парня" это был stream, причём, вероятнее
всего, с RS-232 или ему подобных.
Нет, там по Ethernet идет взаимодействие с железякой, которая реализует взаимодействие с несколькими промышленными интерфейсами (типа GPIB, но и Ethernet тоже есть) , к которой и подключается аппаратура. Аппаратур несколько, но подобная проблема возникла только на одной. Передающий поток - отдельный, программа на Qt.

А какая разница? Ethernet как и RS-232 тоже последовательный протокол с асинхронной передачей и приёмом.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109385
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010
Да если бы: недавно решали проблему с тем, что глючила (переставала отвечать) аппаратура, с которой работала наша программа. Проблему решила команда sleep(10) перед отправкой пакета (нигде в документации на аппаратуру и протоколы с ней не были указаны никакие задержки). Ну, и sleep(0) тоже иногда пользу приносить может.

Некоторые вещи настолько логичны, что указывать их не стоит везде и всюду.
Например, когда впервые работаешь с аппаратурой, то перед изменением настроек порта нужно дождаться отправки буфера обмена.
По протоколу инициализация идет на 300, а затем, после согласования, общение переходит на 9600 или выше. Но прежде, чем переключать скорость, нужно дождаться отправки того, что было на 300.

Но если такие моменты не учитывать, то можно эмпирическим путем выставлять слипы на разные мс. И когда-нибудь да и угадаешь.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109706
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman
bk0010
Да если бы: недавно решали проблему с тем, что глючила (переставала отвечать) аппаратура, с которой работала наша программа. Проблему решила команда sleep(10) перед отправкой пакета (нигде в документации на аппаратуру и протоколы с ней не были указаны никакие задержки). Ну, и sleep(0) тоже иногда пользу приносить может.

Некоторые вещи настолько логичны, что указывать их не стоит везде и всюду.
Например, когда впервые работаешь с аппаратурой, то перед изменением настроек порта нужно дождаться отправки буфера обмена.
По протоколу инициализация идет на 300, а затем, после согласования, общение переходит на 9600 или выше. Но прежде, чем переключать скорость, нужно дождаться отправки того, что было на 300.

Но если такие моменты не учитывать, то можно эмпирическим путем выставлять слипы на разные мс. И когда-нибудь да и угадаешь.


А это как-то отлавливается?
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109957
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоже не вижу ничего криминального в Sleep < 500. А уж для < 100 и подавно. Скорость закрытия проги, как правило, не так критична, как запуска.
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109964
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal
Тоже не вижу ничего криминального в Sleep < 500. А уж для < 100 и подавно.
Это пока код со слипом не попадет в цикл.
Ну да ладноПостовой: И я про вас никому. Езжайте! Да, когда свернете налево, ну вы-то направо, там проезд запрещен, обрыв. Но вам туда можно!!!
...
Рейтинг: 0 / 0
Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
    #40109986
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Это пока код со слипом не попадет в цикл.

Ну, сдуру-то можно и х сломать.
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Настройка Delphi XE8 чтобы было удобно работать как в Delphi 7
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]