Версия PascalABC.NET 3.5


#1

http://pascalabc.net/chto-novogo

Последний чейнджлог:

[25.05.19] Версия 3.5.0.2067

  • Экспериментальный модуль OpenCL (разработчик Латченко Сергей aka @Sun_Serega)
  • Улучшения Pattern Matching - Pattern Matching с IList, кортежами, константами
  • Добавлены директивы компилятора {$Title} и {$Description}
  • В Graph3D учтён Autoreverse при анимации поворота
  • В модуле WPFObjects добавлен компонент TextWPF и реализовано выравнивание дочерних элементов
  • В компиляторе командной строки pabcnetclear добавлены директивы в командную строку и переработана диагностика ошибок
  • Увеличено разрешение иконки приложения
  • Реализованы f.Lines для текстового файла и f.Elements для бестипового
  • Задачник PT4 обновлен до версии 4.19
  • Реализованы f.ReadТип для базовых типов в бестиповых файлах, f.Rewrite и f.Append в текстовых и f.Reset(Encoding), f.Rewrite(Encoding) в бестиповых файлах
  • Кардинально улучшена скорость и плавность графики в GraphWPF, реализованы методы SetPixel, SetPixels и DrawPixels.
  • Более эффективные TakeLast и SkipLast

#2

Недавно появилась кнопка:

image

Что она делает?


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

Активируйте ее. Наберите begin или repeat и нажмите Enter. Пока умеет только это.


#4

Ухты! И даже точку ставит когда надо…

Хотя именно в этом случае снипеты больше делают. Но всё равно классно.
Особенно когда (если) будет с классами и записями работать, там снипеты далеко не самые удобные…


#5

Подавайте идеи в этом направлении. Конкретные.


#6

Ну, не только у begin бывают соответствующие end. case, record, class и т.п. - тоже стоит дополнять в том же смысле, при нажатии Enter.


#7

Беда в том, что case, record et cetera имеют на строке продолжение…


#8

В смысле продолжение?


#9

В прямом: case ххх of … , ууу = record … Я не знаю, как это будут реализовывать. Вы просто предложите операторы, в которых по нажатию Enter можно что-то написать с тем же отступом. А разработчики сами решат, что им подходит.


#10

Не вижу проблемы. Если на строчке Не в комментарии/строке есть 1 из ключевых слов, у которого бывает соответствующий end - добавить его.


#11

В ситуации if … then после Enter курсор сдвигается на 2 позиции вправо. Если набрать begin:

if a then
  begin

и нажать Enter, то блок begin-end отъедет назад:

if a then
begin
  |
end;

То же со всеми операторами после do

Если уже есть end и он правильно сдвинут, то end не добавляется.

Коллекционируем идеи и предложения. Идея class(…) Enter делается на раз с использованием регулярных выражений


#12

Это прекрасная новость! Хоть в конце выходного дня позитивчик ))


#13

Главное не забудьте проверять сразу чтоб class не был в комментарии или константной строке, было бы очень неприятно… Это ведь тоже с регулярками не сложно?


#14

Ну, это будем проверять с помощью армии тестировщиков :slightly_smiling_face:

Поначалу конечно работать не будет Ж)


#15

Так же, похоже, работает и со скобками (но не фигурными, желательно сделать).

Вот только, что особо плохо - скобку ставит не призрачную. То есть:

  1. В студии - если открывающуюся скобку поставил случайно, когда удаляешь её - удаляется и соответствующая. А тут этого не происходит.

  2. И если писать быстро (abc) - закрывающихся скобок получается 2, потому что закрывающаяся скобка не призрачная, а значит её не заменяет написанной программистом.


#16

Вот что я имею в виду:


Это ужасно неприятно

Ну и к багам сразу (прямо пока снимал - нашёл XD):


То есть, если заменять выделение скобкой - вместо закрывающейся скобки ставит последний символ из выделения.

#17

Про призрачные скобки - я подумаю. Пока Backspace не получается обработать.

По последнему примеру. На видео я ничего не вижу. Оно мутное. Нельзя ли текстом? Если я пишу fffff и выделяю всё это слово и ставлю скобку, то у меня fffff заменяется на () То есть, всё верно


#18

Сообщение перенесено в тему Болталка PascalABC.NET


#19

Странно, а у меня на (f заменяется…


#20

Оказывается, в паскале был raise без параметров как в C#, просто он нигде не работал))). Начиная отсюда - этот код работает:

begin
  try
    raise new Exception;
  except
    raise;
  end;
end.