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

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

[Приведение и преобразование типов (Руководство по программированию на C#)] (https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/types/casting-and-type-conversions)

Цитата:

Для встроенных числовых типов неявное преобразование можно выполнить, если сохраняемое значение может уместиться в переменной без усечения или округления.

1 лайк

Это когда Вы напишете собственную систему программирования, в ее языке будете указывать, что и как надо правильно делать. А Pascal - он не C# и не надо на сишные руководства ссылаться.

Я не выдумывал этих правил, я ориентировался на C#. Я также, заметьте, обосновал, почему так правильно.

Вы бы еще ка Кобол сослались.

В Delphi сужающие преобразования делаются неявно. Мы соблюдаем здесь прежде всего семантику Delphi.

Но, все же, так как это язык для обучения, то считаю, что следует такое запретить. Это избавит новичков от вопросов в стиле почему здесь было 256, а стало 0? Чем меньше неявных преобразований, тем легче обучать этому языку, на мой взгляд. Я не предлагаю их убрать, я лишь предлагаю запретить сужающие неявные преобразования.

Здесь логика такая. 1 - типа integer. В обеих функциях инстанцируем T=integer. Получаем два кандидата: P1<integer,integer> и p1<integer,byte> Первый подходит идеально - преобразований типов не требуется.

1 лайк

Еще раз. В Delphi Не так. Совместимость ядра у нас высокая

1 лайк

Довольно неплохо описано, что уже реализовано, а где можно ознакомиться с “нюансами” – отличия .NET и PABC.NET, и чего пока нету? Спс

Это как? .NET - это набор библиотек и JIT - компилятор, а PascalABC.NET - это язык программирования и IDE.

Любой актуальное “ознакомиться”, увы, но пока только в Справке по языку. Подробности каких-то реализаций, если используются средства .НЕТ - MSDN

А что Вы имеете в виду - различия в языке с C# или различия в библиотеках?

Админ, интересует что доступно и работает из платформы .NET. Например, уже добавили Objects (пока что без описания), а что ещё пока не полностью или отсутствует? Наверняка реализация среды PABC.NET также наложила свой отпечаток в виде особенностей и ограничений.

Благодарю

Что касается своих модулей, то их мало и они нацелены на обучение. WPFObjects, о котором Вы говорите - вот прямо сейчас я выложил со справкой. GraphWPF - уже год как, но справка появится к сентябрю Graph3D - уже год как, но справка появится к сентябрю

Что касается языка. Отсутствует что - то, что есть в языке C#& но нет в PascalABC.NET? Так это достаточно много чего. Потом, в последних версиях C# - взрывное количество изменений. Основное есть и в PascalABC.NET и в C#.

2 лайка

Кто нибудь знает, как можно запретить запись в ComboBox?

Установите свойство DropDownStyle в DropDownList. А напрямую запретить вроде как нельзя.

1 лайк

Почему так можно

var a := new byte[](1, 2, 3, 4, 5);
var b: array [,] of byte := ((1, 2), (3, 4), (5, 6));

а так нельзя var c := new byte[,]((1, 2), (3, 4), (5, 6));

1 лайк

Потому что таков синтаксис языка. Посредством new Вы вызываете конструктор для класса byte[,], требующий явно указать размер создаваемого массива.

Наверно, неправильно задавать вопрос “почему это так устроено”. Все равно, что спрашивать Бронислава, почему он - Бронислав.

1 лайк

Нелогично. Надо было такой же конструктор сделать, как и для byte[] или наоборот для byte[] такой же, как для byte[,] чтобы одинаково было. Нет проблем указывать явно, но есть трудности с восприятием, когда ожидаешь подобного, а тут бац и нифига не так.

Спасибо! Как раз то, что нужно.