Я изменил название пулл реквеста. Просто на форуме название не обновилось.
Восстановил версию на сайте после сбоя.
Крупные кнопки - это результат сбоя в локальном репозитории.
Сбой обновления с закрытием среды - это результат некорректного исправления ошибки с асинхронным обновлением. Вернул всё назад. Пусть будет синхронное.
Здравствуйте! Очень хотелось бы увидеть в Pascal NET темную тему. Возможно ли это в будущем? PS: Возможно про темную тему уже писали, мне просто лень читать все комментарии
Что то последнее время снова об этом часто стали писать… Вот последнее:
Ну т.е. Вам лень даже просто читать, а разработчкиам должно быть не лень это писать? Я бы, честно говоря, даже постыдился такие вещи заявлять.
Видимо, очередной кульный хацкер с неважным знанием русского языка.
Тьма!
Темная тема давно назрела. Помню, раньше был аргумент, что «серьёзные ide» такое не используют, но сейчас основные игроки: Visual Studio, IntelliJ IDEA — обладают такой опцией.
А еще в Америке и на Западе процветают идеи феминизма и ЛГБТ-сообществ. И что нам до них? Будем в Справке делать опцию, чтобы о PascalABC.NЕТ можно было читать и говорить в женском и среднем роде?
Сама идея сделать возможность изменения темы в IDE - это чудесная идея. Но, не будем забывать, что всё-же это время разработчиков, которых не так уж и много (если они будут это реализовывать), которое они бы потратить, на что-либо другое (я не имею ввиду, что идея настройки темы - бесполезная идея, я о том, что с точки зрения важности для разработчиков есть куда более важные вопросы, например, исправление ошибок с лямбдами). С другой стороны, никто не мешает реализовать это любому фанату данного проекта. Лично мне нравится светлая тема.
type
T0 = class
public
auto property X: integer;
end;
T1 = class
private
instance: T0;
public
property X: integer read instance.X write instance.X; // Program3.pas(11) : Ожидалось имя процедуры или функции
end;
begin
end.
Это адекватная реакция компилятора?
Вы забыли присвоить value. По сообщению об ошибке предпочтение делается старому синтаксису где нужно имя.
А есть ли что то плохое в том чтоб расширить старый синтаксис тут?
Да, есть. Свойства старые и новые в смысле дизайна языка - чрезвычайно ломкая вещь. Поэтому расширять и без того уже слишком расширенный синтаксис - плохая затея
Вопрос внутри кода
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
uses
System, System.Windows.Forms, System.ComponentModel;
procedure SomeClosing(s: object; e: FormClosingEventArgs);
begin
writeln('выполнилось');
end;
begin
var MainForm := new Form;
MainForm.FormClosing += SomeClosing;
// Как мне тут удалить все делегаты из MainForm.Closing не используя имя SomeClosing. (т.е. так нельзя MainForm.Closing -= SomeClosing;)
// в C# это делается приравниванием к null
// MainForm.Closing := nil; но тут ошибка
Application.Run(MainForm);
end.
Никак. И даже если бы можно было - это говнокод.
Правильно - выбирать поведение в SomeClosing
, через if
, или лучше case
.
Это не очень хороший выход из ситуации (не зависимо от языка). Может, например, возникнуть потребность вернуть всё как было - до приравнивания к null
. То есть, придётся каким-то образом добавлять всё обратно. Это - лишняя работа. Лучше хранить, например, в какой-то переменной типа bool
флаг, указывающий используются ли делегаты из MainForm.Closing
или нет. В виде кода:
/// <summary>
/// Какой-то класс.
/// </summary>
public class MyClass
{
/// <summary>
/// Событие.
/// </summary>
public event Action Event;
/// <summary>
/// Метод, вызывающий событие.
/// </summary>
public void Method()
{
// Какой-то код.
Event?.Invoke();
// Какой-то код.
}
}
internal class Program
{
private static bool flag;
private static void MethodA()
{
if (!flag)
return;
// Какой-то код.
}
private static void MethodB()
{
if (!flag)
return;
// Какой-то код.
}
private static void Main(string[] args)
{
MyClass x = new MyClass();
x.Event += MethodA;
x.Event += MethodB;
Flag = true;
x.Method(); // Действия из MethodA, MethodB - выполняются.
Flag = false;
x.Method(); // Никаких действий не произойдёт.
}
}
, либо:
internal class Program
{
private static bool flag;
private static void MethodA()
{
// Какой-то код.
}
private static void MethodB()
{
// Какой-то код.
}
public static void MainMethod()
{
if (!flag)
return;
MethodA();
MethodB();
}
private static void Main(string[] args)
{
MyClass x = new MyClass();
x.Event += MainMethod;
Flag = true;
x.Method();
Flag = false;
x.Method();
}
В pabcnetc копирайт до сих пор 2018)
Откатил правки Kotov - т.к. GenerateAllSetups перестал собирать инсталлят