Замечания и предложения

Разработчики так и не смогли сделать асинхронную проверку обновлений. А без этого - вся IDE зависает пока проверяются обновления.
Кроме того, обновления лучше проверять при закрытии IDE.

Что есть - то и есть. Я предлагаю всего лишь ввести опциональную возможность автоматически после загрузки среды вызывать пункт меню. Ничего особого делать для этого не нужно.

Только IDE тогда будет всегда зависать при отсутствии подключения к интернету.

Если это опционально, пользователь сам решит, нужна ему такая возможность или нет. Есть пользователи, имеющие стабильный интернет, раздаваемый по сети 24/7. Например, я ))

А если вам отключат интернет вы даже в настройки зайти из-за зависания не сможете ))

Придётся .ini-файл редактировать

Если отключат - подожду. ибо что делать-то в РАВС без интернет?

А сейчас что - удобно? Вон человек вопрос написал, я зашел, проверил, считал что версия последняя, смотрел совсем недавно. Кто знал, что вышло обновление? Практически при каждом входе надо запускать проверку руками. Иногда забываешь, поскольку никакой закономерности в частоте появления обновлений нет и информации о том, что обновление было, нет также.

И откатить обновление назад нельзя, если в нем что-то возникло, надо сидеть и ждать исправлений (конечно, если важно именно то, что сломалось). Это потому, что нет предыдущей версии нигде.

Нет, хуже всего когда инет слабый. Когда инета нет - через пару секунд выдаёт ошибку сети. А если он слабый или нестабильный, или ещё хуже, если сайт паскаля снова лежит (для чего не нужно отсутствие инета) - то пока оно ещё одумается, пройдёт сек 15.

@Admin, В http://pascalabc.net/chto-novogo всё ещё 3.4.2 написано. Хотя и скачивается последняя версия

1 лайк

@Admin, можно поподробней о модуле BBCMicroBit? Что это и зачем? (посмотреть исходный код у меня сейчас нет возможности)

Это для школьников. Платы типа Arduino

1 лайк

Почему в последних версия паскаль стал компилировать exe файлы в папку C:\PABCWork.NET\Output вместо той, в которой лежит исходник. Это до жути неудобно стало. Или как это отключить.

Отключите это в настройках. Подавляющему большинству удобна настройка, сделанная сейчас по умолчанию.

Привык юзать в коде функцию: ExtractFilePath(GetEXEFileName) и с новыми версиями начали сыпаться ошибки в коде.

Конкретнее выражайтесь, это ничего не говорит.

И - та функция всё равно дубль, оригиналы всех для работы с путями к файлам - в классе System.IO.Path.

Наверное вы её неправильно использовали

Вот к примеру небольшой код, использующий стороннюю библиотеку для распаковки архива. Исходник лежит в папке с игрой Skyrim.

{$reference 'SharpCompress.dll'}
uses SharpCompress, SharpCompress.Archives;
begin
  try
    var archive: SharpCompress.Archives.IArchive := SharpCompress.Archives.ArchiveFactory.Open(ExtractFilePath(GetEXEFileName) + 'Skyrim\Updates\Enhanced_Blood_Textures_LITE.rar', nil);
    var EO := new SharpCompress.Common.ExtractionOptions;
    EO.ExtractFullPath := true;
    EO.Overwrite := true;
    foreach var entry in archive.Entries do
      if not entry.IsDirectory then entry.WriteToDirectory(ExtractFilePath(GetEXEFileName) + 'Mod Organizer\mods\', EO);
  except
    on System.DivideByZeroException do 
      writeln('Деление на 0');
    on e: System.IndexOutOfRangeException do
      writeln(e.Message);
    on System.FormatException do
      writeln('Неверный формат ввода');
  else writeln('Какое-то другое исключение');
  end;
end.

Если в настройках не отрубить функцию “Выходные файлы генерировать в директорию такую-то”, то программа будет сыпать ошибку:

Ошибка времени выполнения: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку “SharpCompress, Version=0.23.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96” либо одну из их зависимостей. Не удается найти указанный файл. Стек: в 1.Program.$Main() в 1.Program.Main()

1 лайк

По моему уже был разговор про это здесь. Но разработчики то ли не прочитали, то ли проигнорили… В общем сделал issue, теперь точно заметят:

Не помню, предлагалось уже или нет…

function ToDigits(self: integer): sequence of integer; extensionmethod;
begin
  if self<0 then
    if self=integer.MinValue then
    begin
      yield 2;
      self := 147483648;
    end else
      self := -self;
  
  var d := 1;
  var m := self div 10;
  while d<=m do d *= 10;
  
  while d <> 0 do
  begin
    yield System.Math.DivRem(self,d,self);
    d := d div 10;
  end;
  
end;

begin
  (12345).ToDigits.Println;
  (10000).ToDigits.Println;
  integer.MaxValue.ToDigits.Println;
  (-12345).ToDigits.Println;
  integer.MinValue.ToDigits.Println;
end.

(ну и по аналогии с int64 и может BigInteger)

Подтолкнуло написать это: http://www.cyberforum.ru/pascalabc-net/thread2551911.html#post14087426

Предложение однозначно хорошее, на мой взгляд, поэтому:

Хорошо бы было (с моей точки зрения), если бы в PascalABC.NET:

  • поддерживались списки ToDo
  • интеграция с Git и возможность работать с GitHub
  • средства рефакторинга кода

Я не настаиваю и вряд ли стал бы по следующей причине - PascalABC.NET не гонится за такими гигантами, как Visual Studio/Rider (хотя, некоторые вещи бывает просят перетянуть из них и сюда), также ориентирован на начинающих.

Если бы (возможно, в будущем) данный проект решил бы развиваться по пути профессиональных IDE, то я бы предложил бы эти два нововведения (хотя, очень вероятно, что заниматься ими начали сами разработчики и без моего напоминания). В то же время, тогда бы встал вполне понятный вопрос: Зачем это всё нужно в IDE, если ниша данного языка - начинающие?. Да, конечно, иметь дополнительный функционал, который может пригодится - хорошо, но ведь, нишу “производственную” уже заняли другие IDE, такие как Visual Studio и Rider и насколько будет он (функционал) использоваться в PascalABC.NET - неизвестно (для ответа на данный вопрос надо чётко знать потребности пользователей), в то время как - это трата времени (вполне возможно впустую) разработчиков, которое они бы могли потратить на увеличение стабильности работы IDE (улучшение Intellisence, например).