Pascal中val函数报'got untyped, expected Real'错误排查
问题分析与解答
报错里的"Untyped"是什么意思?
这里的"Untyped"指的是你写的val(ParamStr(2), par_a)这个表达式是无类型的——因为Pascal里的Val是一个过程(不是函数),它没有返回值,不能当作具体数值传递给其他函数的参数。编译器识别不到这个表达式的有效类型,所以提示你传入了无类型的值,而函数p要求的是Real类型参数,因此触发报错。
解决方法
你需要先单独调用Val完成字符串到数值的转换,再把转换后的变量传给函数p:
Val(ParamStr(2), par_a); // 先将ParamStr(2)转换为数值存入par_a Val(ParamStr(3), par_b); // 同理完成ParamStr(3)到par_b的转换 p(par_a, par_b); // 再把par_a和par_b传给函数p
之前把Real换成Double没用,因为问题根源不是变量类型不匹配,而是错误地把过程当作函数来使用了。
内容的提问来源于stack exchange,提问作者George Glebov
相关产品推荐
相关产品推荐

