Не скажите ли какой антивирус? Другие могут столкнуться с подобной ситуацией и возможно данный диалог им поможет.
Не скажите ли какой антивирус?
COMODO
В подобных случаях скачиваем демоверсию антивируса Касперского, отключаем свой, проверяем под Касперским. Если работает - делаем вывод…
Вряд ли лучшее решение замена одной системы защиты на другую и с вероятными последствиями экспериментов для ОС. Хотя я знаю случаи, когда некоторые чрезмерно подозрительные пользователи устанавливали несколько антивирусов, но подобные эксперименты часто приводили к неработоспособности одного и проблемному удалению другого. (Попадалось и обратное: “У меня ничего ценного на диске нет, а вирусы маленькие и особо не мешают, так что комп шустрее работает.”)
Достаточно проверить логи и просто перенастроить или отключить на время конкретные компоненты, а ещё лучше – бесплатная виртуальная машина без антивирусов и прочего ПО.
А как в новом подходе считается проще и правильно отдавать процессорное время ?
- sleep
- базовый приоритет + sleep
- дельта-время
- обработка событий по таймеру
или что-то ещё ?
И - Как правильно вывести на печать форму с изменяемыми размерами, чтобы вписать в страницу или хотя бы ориентацию ?
Я вообще вирусов несколько лет не видел. Просто не шастаю по подозрительным сайтам, проверяю всё что скачиваю и никакие антивирусы не нужны.
А тут подробнее. Поставьте вопрос так чтоб не надо было догадываться что вы имели в виду.
А в чём проблема? Просто маштабируйте картинку при печати. Если вы используете какую то нормальную библиотеку для работы с принтером - там должны быть всякие способы узнать размер бумаги / установить соотношение размера пикселя и бумаги или что то типа того.
Но так как вы не сказали что используете для работы с принтером - на этот вопрос невозможно нормально ответить.
А как же торренты и контент “Для тех, кто спит с клавиатурой”? ))))
Я пират всем сердцем, но вообще то пиратить тоже возможно осторожно.
Если осторожно, наверно можно перейти по натянутому канату между парой высотных домов, вопрос лишь в том, все ли это могут и ради какой великой цели это надо делать?
В принципе, “отдавать процессорное время” не имеет столь уж много значений, но если конкретнее:
Как в нетребовательных Windows Forms-приложениях, работающих в одном потоке с текстовыми данными не в реальном времени, максимально разгружать процессорное время, оставляя ресурсы для других ?
Как я понял по Диспетчеру задач, после приоритизации через
System.Diagnostics.Process.GetCurrentProcess().PriorityClass:= System.Diagnostics.ProcessPriorityClass.BelowNormal;
даже после изменения системы распределения с WindowsXP, вместо Sleep(0) рекомендуется указывать минимальное значение для сна Sleep(1) или больше.
Также, если имеется существенная разница, как это лучше уменьшать время ЦП в консольных приложениях ?
В Палитре > раздел Печать нашёл соответствующие компоненты, почитал справку, но пока не понял как указать текущую форму в качестве документа и как вместить на одну страницу не смотря на размеры формы (изначально форма вмещается на А4 с привязкой якоря слева-вверху-справа, но как выбрать ориентацию и масштабировать на А4 не зависимо от нового размера формы).
В не требовательных ничего делать не надо. Они уже отдают всё процессорное время другим процессам.
Обработка сообщений формы это вызов процедуры WndMain
, которая в wf является, вроде, protected
методом формы. И этот вызов происходит только когда есть сообщение, так что тут нечего оптимизировать.
И вообще приоритеты процессов вообще помогают только если что то загружает процессор на 100%. А полную загрузку процессора я видел только в криптомайнинге, при проверке антивируса и на одно-ядерных процессорах.
Sleep(0)
только одноразово передаёт управление другому потоку.
По моему опыту - Sleep(10)
с какой то простой проверкой в while
уже достаточно чтоб влияние процесса было невидимо в диспетчере задач.
Диалоги в wf это не выполнение действия напрямую. В данном случае вы нашли создания окошка где пользователь выбирает настройки. А вы можете настроить только ограничения в этих настройках.
Но, могу предположить что вам придётся создавать новый битмап с маштабированным вариантом содержимого формы.
Нашёл интересную работу zgameeditor с исходниками на гите для Embarcadero Delphi или Free Pascal.
Поковырял отдельные файлы, посмотрел в папке build, но Pascal Abc Net не открывает проект dpr/groupproj, и не понятно с чего начинать.
Насколько выполнимая задача ?
Ну а с чего бы PABC.Net открывал проект другого языка? Чтоб на данном языке открывалось - надо сначала перевести проект с оригинального языка.
Только для начала объясните, зачем оно вам?
Вроде ведь есть возможность скачать готовый релиз, ничего не собирая.
А если чисто чтоб научится с того как устроено - для этого запускать не надо. Для этого надо параллельно писать программу на PABC.Net и время от времени подсматривать в тот проект. Правда я сомневаюсь в эффективности такого обучения, туториалы лучше.
Неправда. Я — подтверждение))
Можете на PascalABC.NET/C# её переписать, если хотите. В любом из двух вариантов полезное занятие как и для Вас самих, так и для PascalABC.NET, поскольку он умеет работать с C# (если на нём писать будете) библиотеками.
Как вы считаете, почему учитель заявил, что данное решение проверки кирпича и щели хотя зачтено, но избыточно ? Неужели вложенные CASE-IF всё ещё считается каноном ?
begin
var x := new real[3];
Println('Размер [X;Y;Z] кирпича=');
(x[0], x[1], x[2]) := ReadReal3;
x.Sort;
Println(10, 'Размер [A;B] щели=');
var y := new real[2];
(y[0], y[1]) := ReadReal2;
y.Sort;
Println(#10, (x[0] <= y[0]) and (x[1] <= y[1]))
end.
Что именно избыточно - надо спрашивать учителя. Я могу предположить, что дело в использовании .Sort
(имеющий очень сложный алгоритм) там где подойдут 4 if-Swap (на всю программу).
И почему вы используете чтение кортежа, заполняя им массив? ReadArrReal
слишком просто?
- Создание массивов возможно через короткую функцию
Arr<T>(...)
. - В Вашем случае можно не разделять объявление переменной-массива и его заполнение.
- Использование кортежей не оправдано - для чтения массивов есть специальные функции, подобные
ReadArrReal(...)
. - При выводе подсказок, возможно, будет хорошим решением использовать интерполированные строки.
Я бы так написал
begin
var x := ReadSeqReal('Размеры X Y Z кирпича =', 3).Sorted.Take(2).ToArray;
var (a, b) := ReadReal2('Размеры A B щели =');
if a > b then
Swap(a, b);
((a > x[0]) and (b > x[1])).Println
end.
Суть алгоритма: наименьшее из сечений кирпича должно в обоих измерениях быть меньше отверстия.
Ученица сказала, что учитель не уточнял суть, но результат верный.
А в вашем примере кирпич 1х2х3 не проходит в отверстие 1х2
Не проходит. Потому что должно быть строго меньше. Равенство недопустимо. А если допустимо, то должно оговариваться в условии. Впрочем, Вы можете изменить условие на “больше либо равно”, если Вам так кажется верным. В реальности все на свете размеры имеют некоторый допуск. И если что-то должно пройти в отверстие, его номинальный размер делают чуть меньше, в размер отверстия наоборот - чуть больше.
Размеры X Y Z кирпича = 1 2 3
Размеры A B щели = 2.0000001 1.0000000001
True