Помощь новичкам

Не скажите ли какой антивирус? Другие могут столкнуться с подобной ситуацией и возможно данный диалог им поможет.

Не скажите ли какой антивирус?

COMODO

В подобных случаях скачиваем демоверсию антивируса Касперского, отключаем свой, проверяем под Касперским. Если работает - делаем вывод…

Вряд ли лучшее решение замена одной системы защиты на другую и с вероятными последствиями экспериментов для ОС. Хотя я знаю случаи, когда некоторые чрезмерно подозрительные пользователи устанавливали несколько антивирусов, но подобные эксперименты часто приводили к неработоспособности одного и проблемному удалению другого. (Попадалось и обратное: “У меня ничего ценного на диске нет, а вирусы маленькие и особо не мешают, так что комп шустрее работает.”)

Достаточно проверить логи и просто перенастроить или отключить на время конкретные компоненты, а ещё лучше – бесплатная виртуальная машина без антивирусов и прочего ПО.

А как в новом подходе считается проще и правильно отдавать процессорное время ?

  1. sleep
  2. базовый приоритет + sleep
  3. дельта-время
  4. обработка событий по таймеру

или что-то ещё ?

И - Как правильно вывести на печать форму с изменяемыми размерами, чтобы вписать в страницу или хотя бы ориентацию ?

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

А тут подробнее. Поставьте вопрос так чтоб не надо было догадываться что вы имели в виду.

А в чём проблема? Просто маштабируйте картинку при печати. Если вы используете какую то нормальную библиотеку для работы с принтером - там должны быть всякие способы узнать размер бумаги / установить соотношение размера пикселя и бумаги или что то типа того.

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

А как же торренты и контент “Для тех, кто спит с клавиатурой”? ))))

Я пират всем сердцем, но вообще то пиратить тоже возможно осторожно.

Если осторожно, наверно можно перейти по натянутому канату между парой высотных домов, вопрос лишь в том, все ли это могут и ради какой великой цели это надо делать?

В принципе, “отдавать процессорное время” не имеет столь уж много значений, но если конкретнее:

Как в нетребовательных 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, и не понятно с чего начинать.

Насколько выполнимая задача ?

1 лайк

Ну а с чего бы 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