Ошибки компилятора PascalABC.Net

Вы ошибаетесь. Внутренний заголовок цикла инициализируется 5 раз. Это классика цикла for.

Как же внешний повторяется 5 раз, если i, которое выводится, все время 1

Сейчас посмотрим. Я описал, как должны работать вложенные for, а не что и как получилось в Вашем случае.

Посмотрел. Все так. Вывод пяти строк - результат первого прохода по внешнему циклу при i = 1 и пяти проходов по внутреннему для j от 1 до 5. Далее i = 2, i <= 5, j = 1, j > 0, ничего не выводится, i =3, 4, 5 И каждый раз j = 1, j > 0.

Да, пожалуй, я неправ. Вся печать происходит при i = 1, потом внешний цикл продолжается, но уже ничего не печатается.

Спасибо. Извините.

Можно все удалить.

2 лайка

Люблю, когда человек понимает, где ошибся. Потому что это уже навсегда. Больше в этом вопросе у него ляпов не случится.

2 лайка

@Admin после фикса #2305 вызов _GenerateAllSetups.bat стал выдавать:

[0]Internal compiler error in module Compiler.Compile[RebuildStandartModules.pas] :'System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: startLine
   at System.Reflection.Emit.ILGenerator.MarkSequencePoint(ISymbolDocumentWriter document, Int32 startLine, Int32 startColumn, Int32 endLine, Int32 endColumn)
   at PascalABCCompiler.NETGenerator.ILConverter.MarkSequencePoint(ILGenerator ilg, ILocation Location)
   at PascalABCCompiler.NETGenerator.ILConverter.MarkSequencePoint(ILocation Location)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertStatement(IStatementNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.visit(IStatementsListNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertBody(IStatementNode body)
   at PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonMethodNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonTypeNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertTypeImplementations(ICommonTypeNode[] types)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertFromTree(IProgramNode p, String TargetFileName, String SourceFileName, CompilerOptions options, String[] ResourceFiles)
   at PascalABCCompiler.Compiler.Compile() System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: startLine
   at System.Reflection.Emit.ILGenerator.MarkSequencePoint(ISymbolDocumentWriter document, Int32 startLine, Int32 startColumn, Int32 endLine, Int32 endColumn)
   at PascalABCCompiler.NETGenerator.ILConverter.MarkSequencePoint(ILGenerator ilg, ILocation Location)
   at PascalABCCompiler.NETGenerator.ILConverter.MarkSequencePoint(ILocation Location)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertStatement(IStatementNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.visit(IStatementsListNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertBody(IStatementNode body)
   at PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonMethodNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.visit(ICommonTypeNode value)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertTypeImplementations(ICommonTypeNode[] types)
   at PascalABCCompiler.NETGenerator.ILConverter.ConvertFromTree(IProgramNode p, String TargetFileName, String SourceFileName, CompilerOptions options, String[] ResourceFiles)
   at PascalABCCompiler.Compiler.Compile()'

Да, знаю. Попробуйте сейчас.

А это нормально, что подобный код не компилируется?

## var a:= 'strok12345';
(a[1:6], a[6:11]):= (a[6:11], a[1:6]);

Приходится использовать методы с буферами, типо такого

## var a:= 'strok12345';
var buf:= a[1:6];
a[1:6]:= a[6:11];
a[6:11]:= buf;

Ненормально. Пишите Issue на Github

3 лайка

У нас скоро будет обмен частями массива, а потом и фрагменты матриц менять местами сможем? Класс! Вот только интересно, будет ли работать при частичном или полном перекрытии областей?