我试图在Delphi(Delphi 2005)中定义一个基于其他常量的const,但是Delphi抱怨它不是一个常量表达式.这就是我的代码:
program myProgram; const Xpoints = 20; Ypoints = 30; ArraySize = trunc(sqrt(Xpoints*Ypoints)); var myArray : array[1..ArraySize] of integer;
我可以做ArraySize = Xpoints * Ypoints,但sqrt会导致问题.我的想法是,我希望通过常量Xpoints和Ypoints来调整数组的大小.我可以这样做:
program myProgram; const sqrtXpoints = 4.472135956; sqrtYpoints = 5.47722557506; Xpoints = trunc(sqrtXpoints*sqrtXpoints); Ypoints = trunc(sqrtYpoints*sqrtYpoints); ArraySize = trunc(sqrtXpoints*sqrtYpoints); var myArray : array[1..ArraySize] of integer;
注意稍微高估trunc的平方根值.如果我改变sqrtXpoints或sqrtYpoints,一切都会正确更新,但这种方法看起来很……愚蠢.
作为临时修复,我可以像这样评估常量:
program myProgram; const Xpoints = 20; Ypoints = 30; ArraySize = 24; var myArray : array[1..ArraySize] of integer;
但我不喜欢这个,因为如果我更改Xpoints或Ypoints,ArraySize不会自动更新.
看起来编译器应该知道如何在编译时评估一个常量定义为另一个常量的数学函数,如上例所示,甚至更简单的事情:
const pi = 4.0*arctan(1.0);
但我无法接受它.有什么建议?在此先感谢您的帮助!
解决方法
原文地址:https://www.jb51.cc/delphi/102262.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。