я рад что в последней версии добавили кнопку для сворачивания регионов, но она не сворачивать подпрограммы и классы и вроде там ничего не меняли, всего пару строчек добавили, но такой вот бред стал ужасно мешать
это я то что удалось запечатлел, но там такое происходит… куски кода вообще рандомно разбросаны повсюду, когда тыкаешь на определённый строчки они меняются на другие и назад, в общем когда много кода, много свёрнутых частей - при Ctrl+X и Ctrl+V, и просто при написании кода, когда паскалю нормально не получается проверить где сворачиваемый код - он начинает сходить с ума… единственное лекарство что я нашёл - ставить и убирать пробелы и после каждого поставленого / убраного пробела сохранять(Ctrl+S по крайней мере, сохранение кнопкой не тестил), через 20-50 таких действий обычно всё приходит в порядок… на следующие полторы минуты… если бы “свернуть все регионы” сворачивало всё - можно было бы хотя бы отформатировать и свернуть всё, правда при сворачивании регионов ещё сбивается то на какую строчку смотришь… в любом случаи это фиговое решение проблемы, но пока вы разбираетесь если добавить хотя бы чтоб сворачивалось всё и сохранялась позиция камеры - можно будет как то работать
[details=стек ошибки компилятора]Внутренняя ошибка компилятора в модуле [pabcnetc.exe] :‘System.Exception: System.Exception: У корневого элемента нельзя получить Parent
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ReplaceUsingParent(syntax_tree_node from, syntax_tree_node to)
в SyntaxVisitors.SugarVisitors.TupleVisitor.visit(tuple_node tup)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTree.BaseChangeVisitor.DefaultVisit(syntax_tree_node n)
в PascalABCCompiler.SyntaxTree.WalkingVisitorNew.ProcessNode(syntax_tree_node Node)
в PascalABCCompiler.SyntaxTreeConverters.StandardSyntaxTreeConverter.Convert(syntax_tree_node root)
в PascalABCCompiler.SyntaxTreeConverters.SyntaxTreeConvertersController.Convert(syntax_tree_node root)
в PascalABCCompiler.Compiler.CompileUnit(unit_node_list Units, unit_or_namespace SyntaxUsesUnit)
в PascalABCCompiler.Compiler.Compile()’[/details]
begin
var a: array[1..2] of integer;
var b: array[1..2] of integer;
a := b;
end.
Program1.pas(4) : Нельзя преобразовать тип array [1…2] of integer к array [1…2] of integer
я читал на этом форуме что статичные массивы убого медленные, но решил протестить на сколько же(~в 2.2 раза медленнее чтение и запись чем у динамических), ну и сравнивал с кортежами, в общем не приятно так как то
begin
var a,b: array[1..2] of integer;
a := b;
end.
Это точно. Одна из причин, из-за которой я крайне сильно не любил ТурбоПаскаль и иже с ним. Простейшая программа с процедурами, использующими массивы, превращалась в ужас наподобие Fortran II. Знакомство с возможностями PascalABC.NET 3.2 в части работы с динамическими массивами сделало меня горячим сторонником этой версии паскаля и теперь я считаю, что статические массивы служат лишь для обеспечения совместимости с программами, написанными на “додревних” версиях.
В конце-концов, если человек считает себя разумным, он должен уметь публично признать свои заблуждения и вовремя от них отказаться.
function operator+=<T>(a, b: array of T): array of T; extensionmethod := a + b;
begin
end.
после 3 форматирований получаем:
function operator+=<T>(a, b: array of T): array of T; extensionmethod; extensionmethod; extensionmethod; extensionmethod; extensionmethod; extensionmethod; extensionmethod;extensionmethod := a + b;
begin
end.
ничего не смущает? а вот меня смущает, каждый раз теперь после форматирования чинить… кстати добавьте эту функцию стандартный модуль, + там есть, но писать Result := Result + a как то криворуко…
реализует оператор += для динамических массивов, в стандартном модуле есть оператор + для массивов, вот я думаю почему бы не добавить +=… кстати я ошибку допустил
procedure operator+=<T>(var a: array of T; b: array of T); extensionmethod;
begin
a := a+b;
end;
Ну, это другое дело. Мы не стали это делать, как и операцию a += 5, по той простой причине, что динамический массив - не расширяемый в процессе выполнения. Ну то есть расширять его можно, но накладные расходы велики. Для этой цели надо использовать List < T > - там эти операции есть
я для больших объёмов массивы не юзаю, а вот если говорить про заполнение при инициализации - выходит кривовато:
class a := new List(new integer[2](0,1))
в общем лишним не будет, кстати эти ваши листы есть на f1 только на 1 страницы, спрятаны среди дофига других похожих типов, надо в таком случаи хотя бы нормальную страницу чтоб описывала что значит и с несколькими то примерами
Не заметил, в какой момент, но теперь по умолчанию стал браться логарифм для комплексного аргумента, а для вещественного надо писать System.Math.Log(). Это большая неприятность, потому что во всех ранее написанных программах функция стала возвращать комплексный результат. Как следствие - что-то перестало компилироваться, что-то - начало выдавать результаты в виде кортежа.