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


#986

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

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

Цитата:

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


#987

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


#988

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


#989

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


#993

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


#994

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


#995

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


#996

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


#997

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


#998

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


#999

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


#1000

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


#1001

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

Благодарю


#1002

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

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


#1003

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


#1004

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


#1005

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

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));


#1006

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

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


#1007

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


#1008

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