我有一个很大的问题,因为这段代码在Dev-Pascal中正确编译,但在Lazarus中没有。
for k:=1 to n do
begin
writeln(a[k]:4:2,' ',a[k+1]:4:2,' ',a[k+2]:4:2);
inc(k,2);
end;
我收到此消息
错误:非法分配给for循环变量" k"
我现在该怎么办?我需要在我的程序中使用这个解决方案(递增k计数器)。
答案 0 :(得分:4)
实际上,我认为更多的是Dev-Pascal让你侥幸逃脱,而FP却没有。编译器通常不允许您修改循环中的Protobuf-Net
变量的原因是它可以破坏编译器生成的代码,以确定何时达到上限for
。
添加局部变量for
,为其分配与j
相同的起始值,在k
循环内将其递增2,并使用for
作为数组索引器j
。
答案 1 :(得分:0)
Delphi不允许修改循环变量,TP确实如此。在它自己的模式中,FPC遵循Delphi,因为这是理智的事情,因为MartynA列出了令人沮丧的优化的原因。
然而 FPC允许它在Turbo Pascal模式下用于旧代码库,添加{$ mode tp}或使用-Mtp编译