Ошибки PascalABC.NET

Ну, ловите ошибку. Хотя бы вероятностно. Если мы ее тоже поймаем, то исправим.

Вот два файла. StudLib.pas (28,3 КБ) Этот нормально компилируется (PascalABC.NET 3.2, сборка 1506 от 21.07.2017) StudLib2.pas (28,3 КБ) А в этом возникает ошибка, причем с совершенно несуразным сообщением: “StudLib2.pas(94) : У операции преобразования типов допустим только один параметр.”

Отличаются файлы лишь местоположением конструктора в классе Decomp.

Вижу. Круто.

Крутизна в том, что этот файл “с ошибкой” может ни с того, ни с сего начать нормально компилироваться, если поиграться с методами совершенно в другом классе… А потом, если еще поиграться, опять перестаёт…

И еще. В классе Decomp есть одноименный метод. Если сменить его имя, например на Decomp1 и прописать в конструкторе вызов Decomp1, сообщение об ошибке изменится на более внятное - похоже, что компилятор “хочет forward”.

Вот:

1 лайк

Да. Особенно фотка хороша: "О, есть повод порадоваться! " )))))

Исправили.

1 лайк

Однако странное действие оказывает разделитель на вид вывода в .Println

// PascalABC.NET 3.2, сборка 1509 от 27.07.2017

begin
  var a:=Arr(-6.90052671328672,-3.57918606060606,-1.93019855477855,
      -0.841356503496501,0.0803939393939364,0.905317389277387,
      1.63663384615385,2.32564331002331,3.04623039627039,3.72874895104895);
  a.Println; Writeln;
  a.Println(',')
end.

похоже считается что 0.841356503496501,0.0803939393939364,0.905317389277387,1.63663384615385,2.32564331002331,3.04623039627039,3.72874895104895 это целое слово а - это не минус а тере, оно пытается перенести всё слово чтоб оно писалось на 1 строчке так что всё правильно

ну то есть нет, , должно быть разделителем как и пробел или тере, но по крайней мере это не случайное разделение, и при копировании, например, в блокнот - не должно быть переноса строки

var a := new byte[3](0,1,2);
var b := a[1:2];

у b не отображается тип, не работает автодоввод(Ctrl+Space) и т.п. ошибки вытекающие из этого которые решаться если анализатор кода поймёт что же всё таки такое это b

Все, что выводится на экран по Write/Print - это строка и никаких “переносов” там быть не может, не фантазируйте, из первого варианта вывода видно, что значение отрицательное. На самом деле это результат непродуманной (или ошибочной) компоновки на экране.

Ну, не знаю, что там считается - это компонент стандартный такой, как он переносит - не знаю. Но вряд ли он понимает, что там числа :slight_smile:

По Shift-F9 всё нормально.

Понятно. Доделаем.

если программа была “активна” то даже если закрыть её вкладку то удалить файл не даёт, только после того как нажать “сделать активным” на другой вкладке позволяет удалить

Ctrl+Space не предлагает loop хотя остальные циклы предлагает

При выполнение программы в среде возникает ошибка: Подробная информация об использовании оперативной (JIT) отладки вместо данного диалогового окна содержится в конце этого сообщения.

************** Текст исключения ************** System.ComponentModel.Win32Exception (0x80004005): Не удается найти указанный файл в System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) в VisualPascalABC.Utils.ProcessRunner.Start(String command, String arguments, Boolean redirectIO, Boolean redirectErrors, Boolean RunWithPause, Boolean attachDebugger, Boolean fictive_attach) в VisualPascalABC.RunManager.Run(String fileName, String args, Boolean redirectIO, Boolean redirectErrors, Boolean RunWithPause, String WorkingDirectory, Boolean attachDebugger, Boolean fictive_attach) в VisualPascalABC.WorkbenchRunService.Run(ICodeFileDocument tabPage, Boolean forDebugging, Boolean startWithGoto, Boolean needFirstBreakpoint) в VisualPascalABC.WorkbenchRunService.Run(Boolean Debug) в System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) в System.Windows.Forms.ToolStripButton.OnClick(EventArgs e) в System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e) в System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e) в System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

При включенной отладке JIT любое необрабатываемое исключение пересылается отладчику JIT, зарегистрированному на данном компьютере, вместо того чтобы обрабатываться данным диалоговым окном.

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

Проблема решилась пересозданием файла проекта .pabcproj …

end после try except не подвластно форматированию хотя с try finally всё в порядке

а ещё если коротко описать подпрограмму в классе то форматирование будет делать ей отступ 0 пробелов хотя у всех остальных подпрограмм он 2

1 лайк

Я разделил вкладки на левую и правую части окна. А потом решил, что какая-то из вкладок мне не нужна и решил закрыть ее (правая кнопочка -> Закрыть), то закрывается не та вкладка, на которой я жмакнул, а та вкладка, в которой я кодил в последний раз. Подробно и понятно: https://yadi.sk/i/pMsF5aHJ3LmazY

Поместили сюда:

Не удаляйте пока видео