Станислав Станиславович, я бы очень хотел, чтобы Вы перед сборкой и публикацией очередного офиц. релиза всегда синхронизировали свой репозиторий с Гитхабом и создавали новый Release-tag, чтобы они у нас были четко привязаны к своим последним коммитам. Если Вас это не очень затруднит, конечно…
Я перед сборкой всегда синхронизирую.
А что такое Release tag?
Мне не нравится каждый релиз снабжать меткой. Мы делаем кучу мелких правок - делать на каждую метку - это ненужная работа
Тогда хотя бы в заголовке комментария к релизному коммиту всегда ставьте полную версию билда: так, как вы это сделали последний раз с 3.7.1.2699.
Я уже говорил на эту тему - бывают незначимые изменения. В основном - незначимые изменения. Это утомительно - каждый раз ставить это руками. Я иногда несколько раз в день это делаю.
Со значимыми - согласен.
var
i, j, n: integer;
begin
n := 5;
for i := 1 to n do
for j := 1 to n do begin
Writeln(i, ' ', j);
n := 0
end;
end.
Циклы (оба) не должны прерываться.
Всё правильно работает. Второй цикл начинается полностью заново на следующей итерации первого. А тогда n
уже 0, поэтому второй никуда не уходит.
Внешний цикл и не прерывается, он выполняется ровно 5 раз. Внутренний выполняется для i = 1 пять раз. Затем он больше не выполняется, поскольку n = 0.
Второй - это который? Оба цикла инициализируются при n = 5. И последующее изменение n не может влиять на число повторений.
Вы ошибаетесь. Внутренний заголовок цикла инициализируется 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, потом внешний цикл продолжается, но уже ничего не печатается.
Спасибо. Извините.
Можно все удалить.
Люблю, когда человек понимает, где ошибся. Потому что это уже навсегда. Больше в этом вопросе у него ляпов не случится.
@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
У нас скоро будет обмен частями массива, а потом и фрагменты матриц менять местами сможем? Класс! Вот только интересно, будет ли работать при частичном или полном перекрытии областей?