如何解决Turbo Pascal出现line too long及拆分行后缺')'报错问题
问题1:语法错误(")" expected)原因
Turbo Pascal旧版本的单行字符限制为127个字符,拆分长行时需要遵循以下规则:
- 只能在参数分隔符(逗号)、运算符之后换行,不能将逗号放在新行的开头
- 换行后不能包含多余的不可见控制字符
- 不能在标识符、常量中间拆分
你拆分SKALA参数时把逗号放在了第二行的开头(,12,13...),违反了语法规则,所以报缺少右括号的错误。
问题2:参数数量不匹配的隐藏错误
检查你定义的BINTANG和SKALA过程,参数定义存在变量名笔误,导致实际需要的参数数量和定义的不一致:
BINTANG过程的参数定义错误,你漏写了多个Y坐标的参数,原本需要20个坐标参数+1个颜色参数,你定义时错误地把Y坐标写成了X开头的变量,导致参数数量不足,调用时传了过多重复参数才会出现单行过长的问题SKALA过程内部赋值存在大量笔误,比如XD:=X3*SY应该是XD:=X3*SX,后续多个变量都错误地乘以了SY而不是SX
修复后的完整代码
VAR GD,GM,XA,YA,XB,YB,XC,YC,XD,YD,XE,YE,XF,YF,XG,YG,XH,YH,XI,YI,XJ,YJ,W,I:INTEGER; PROCEDURE GAMBAR; BEGIN GD:=VGA; GM:=VGAHI; INITGRAPH(GD,GM,'D:\TP\BGI'); END; PROCEDURE BINTANG(X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9,C:INTEGER); BEGIN SETCOLOR(C); LINE(X0,Y0,X1,Y1); LINE(X1,Y1,X2,Y1); LINE(X2,Y1,X3,Y2); LINE(X3,Y2,X4,Y3); LINE(X4,Y3,X5,Y4); LINE(X5,Y4,X6,Y3); LINE(X6,Y3,X7,Y2); LINE(X7,Y2,X8,Y1); LINE(X8,Y1,X9,Y1); LINE(X9,Y1,X0,Y0); END; PROCEDURE SKALA(X0,Y0,X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6,X7,Y7,X8,Y8,X9,Y9,C,SX,SY:INTEGER; VAR XA,YA,XB,YB,XC,YC,XD,YD,XE,YE,XF,YF,XG,YG,XH,YH,XI,YI,XJ,YJ,W:INTEGER); BEGIN XA:=X0*SX; YA:=Y0*SY; XB:=X1*SX; YB:=Y1*SY; XC:=X2*SX; YC:=Y2*SY; XD:=X3*SX; YD:=Y3*SY; XE:=X4*SX; YE:=Y4*SY; XF:=X5*SX; YF:=Y5*SY; XG:=X6*SX; YG:=Y6*SY; XH:=X7*SX; YH:=Y7*SY; XI:=X8*SX; YI:=Y8*SY; XJ:=X9*SX; YJ:=Y9*SY; W:=C+2; END; {PROGRAM UTAMA} BEGIN GAMBAR; SETBKCOLOR(15); BINTANG(17,0,23,12,23,12,36,12,0,12,13,12,36,12,26,21,26,21,29,34,2); READLN; FOR I:= 1 TO 20 DO BEGIN SKALA(17,0,23,12,23,12,36,12,0,12,13,12,36,12,26,21,26,21,29,34, 2,I,I,XA,YA,XB,YB,XC,YC,XD,YD,XE,YE,XF,YF,XG,YG,XH,YH,XI,YI,XJ,YJ,W); BINTANG(XA,YA,XB,YB,XC,YC,XD,YD,XE,YE,XF,YF,XG,YG,XH,YH,XI,YI,XJ,YJ,W); DELAY(500); END; READLN; CLOSEGRAPH; END.
补充说明
- 修正后补全了
BINTANG和SKALA缺失的Y坐标参数,调用时删除了重复传入的冗余参数,大幅缩短了单行长度 - 长参数拆分时统一在逗号后换行,新行缩进对齐,符合Turbo Pascal语法要求
- 修正了
SKALA过程中所有乘法参数的笔误,保证缩放计算逻辑正确
内容的提问来源于stack exchange,提问作者RIZKY A
相关产品推荐
相关产品推荐

