Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Новое в PascalABC.Net

08.08.2018, 22:17. Показов 1154. Ответов 3

Студворк — интернет-сервис помощи студентам
Я буду сюда постить новые фичи этого языка (интересно, чем все закончится). Если Вы знаете какие-то новые фичи, то пожалуйста, отпишитесь здесь.

Добавлено через 5 минут
Расширенные свойства
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses System;
 
type
  IPrintable = interface
    function GetStringRepresentation(): string;
    
    procedure Print();
    
    procedure Println();
  end;
  
type
  TBox = class(IPrintable)
  private
    fWidth, fHeight: integer;
    
  public
    property Width: integer
      read fWidth
      write
      begin
        if (value < 0) then
          raise new ArgumentException();
        fWidth := value;
      end;
      
    property Height: integer
      read fHeight
      write
      begin
        if (value < 0) then
          raise new ArgumentException();
        fHeight := value;
      end;
    
    constructor Create(width, height: integer) := (self.Width, self.Height) := (width, height);
    
    function GetStringRepresentation(): string := $'({Width}, {Height})';
    
    procedure Print() := Write(GetStringRepresentation());
    
    procedure Println() := Writeln(GetStringRepresentation());
  end;
 
begin
  (new TBox(-1, 2)).Println();
end.
Как и в C# в сеттере можно использовать неявно объявленный параметр value.

Добавлено через 3 минуты
Интерполированные строки
Pascal
1
2
3
4
5
uses System;
begin
  var (X, Y) := ReadInteger2();
  Writeln($'X = {X}, Y = {Y}'); // То же самое, что и WritelnFormat('X = {0}, Y = {1}', X, Y);
end.
Как и в C# теперь появилась возможность использовать интерполированные строки, являющиеся синтаксическим сахаром, насколько помню, над string.Format.

Добавлено через 10 минут
match-with
Конструкция match-with для сопоставления типов (case по типам, грубо говоря):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  TA = class
  end;
  
  TB = class(TA)
  end;
 
begin
  var X := new TB();
  match X with
    TB(var b): Writeln('X является экземпляром класса TB');
    TA(var a): Writeln('X является экземпляром класса TA'); // TA - тип к которому приводится X; a - переменная, в которую записывается результат приведения.
  end;
end.
Добавлено через 8 минут
Пример использования match-with:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
uses System;
 
var
  X: array of integer;
 
begin
  SetLength(X, 1);
  match X with
    &Array(var a): Writeln('X является массивом');
    IEnumerable<integer>(var b): Writeln('X является IEnumerable<integer>');
  end;
end.
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2018, 22:17
Ответы с готовыми решениями:

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в PascalABC у меня не работали в .net

Установится ли PascalABC.NET на систему, где установлен только .NET 4.6.1?
Привет всем. Вопрос, собственно, озвучен выше. Конкретнее: есть компьютер со свежеустановленной Win10 x64, на которой присутствует...

Перевести с PascalABC.net на JS
Помогите перевести на JS c PascalABC.Net. Пробывал сам перевести, считает не так как на Pascal Запись в файл не нужно. считаю при входных...

3
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.08.2018, 14:08  [ТС]
Пространства имён (те же самые модули, только немного по-другому работают).
Объявление пространства имён:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace ИмяФайлаПространстваИмён;
interface
  { раздел интерфейса }
 
implementation
  { раздел реализации }
 
initialization
  { раздел инициалиализации }
 
finalization
  { раздел финализации }
 
end.
Точнее - всё как в модуле. Сокращенный вариант объявления:
Pascal
1
2
3
namespace ИмяФайлаПространстваИмён;
 
end.
Подключение пространства имён (файла его содержащего) производится так:
Pascal
1
{$includenamespace ИмяФайлаПространстваИмён}
Но: использование этой директивы в пространствах имён запрещено. При попытке это сделать:
NS.pas(x) : Использование includenamespace в модулях недопустимо

Не по теме:

Но, разработчики отказались от публикации этой фичи, так как:

...там интеллисенс не сделан.

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
18.08.2018, 14:17
И опять же, объясните мне кто-нибудь понятным языком, зачем в Паскале, при наличии модулей, нужны пространства имен? Что это даст?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.08.2018, 15:12  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Что это даст?
Возможность хвастаться тем, что они есть в PascalABC.Net. Если серьезно - то, лично мне, не ясно, как это может пригодится, если пространства имён повторяют модули в своем функционале. Тем более, они более ограничены, чем в C#. Разнести, например, классы по разным файлам одного пространства имён не получится.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2018, 15:12
Помогаю со студенческими работами здесь

Проект в PascalABC.NET
Пишу программу. Сложность в том что программа несколько различных стадий. Всё это можно было бы расфасовать по разным юнитам, но...

VK.API на PascalABC.NET
Доброго времени суток, написал модуль для PascalABC.NET, с помощью которого можно использовать vkapi. Вот он: library VKAPI; ...

Превращение PascalABC.Net в C#
Зачем разработчики превращают PascalABC.Net в подобие C#? В частности, зачем в разрабатываются пространства имён, если в Паскале уже есть...

PascalABC.NET Записи
Помогите переделать по процедуры и функции:cry: type spisok = record surname: string; name: string; otchestvo:...

PascalABC.NET и Excel
Программа должна искать в тексте из файла .xlsx значение,которое перед этим ввел пользователь. assign(f,'D:\Дані.xlsx'); reset(f);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru