我遇到了一个问题,在IDE中关闭并重新打开文件会将我的数据集的参数(tparam)从integer更改为shortint。如果我将它们更改为integer,它看起来会保存,但一旦关闭并重新打开,它又会恢复为shortint。Delphi 是否有办法将参数从Integer更改为Shortint?
我在这里发现了类似的问题http://www.delphigroups.info/2/1/284088.html
它似乎是一个错误,但有**有一些时尚的变通办法吗?**升级 Delphi 版本是不是我可以做的事情在这一刻。(复制步骤概述在第二次编辑)
编辑:
如果将值类型更改为integer,只需在表单上放置一个TQUERY,然后在其中放置一个带有参数的sql语句,即可实现此操作。保存并重新打开值类型,然后将其更改为shortint。
再次编辑:
在 Delphi 7中,创建一个新的应用程序。在表单上放置一个TQUery。编辑SQL脚本,类似于'select * from table where id =:idnumber。接下来编辑参数。选择idnumber,并将VALUE.TYPE更改为Integer。此时,您可以保存文件并关闭。当您重新打开文件时,再次转到参数,选择idnumber,它将保持ftInteger类型,但value.type将为Shortint。这是我希望保持整数的部分,但不幸的是,它将被转换为shortint。
2条答案
按热度按时间h43kikqp1#
我可以解释您看到的行为,它不是bug。(顺便说一句,您的问题是误导性的。根据编辑和注解,您的实际问题是“ Delphi 7将Parameter.Value.Type从integer更改为shortint”,这根本不是一回事。)
您正在检查
Param.Value
的Value.Type
,它没有存储在.dfm
文件中。Value.Type
是在表单从dfm
流入并读取Value
时设置的,或者是在运行时设置Value
时设置的。我可以按照你的步骤来演示这一点:
在一个新的空白表单上放置一个TQuery。在
TQuery.SQL
中添加一些SQL。我使用了SELECT Id FROM SomeTable WHERE Id = :id
。在
TQuery.Params
中单击...
,然后在Parameter Editor
对话框出现时单击id
参数。在对象检查器中单击Value
,然后将Value.Type
更改为Integer
。保存项目和窗体,然后关闭它们。重新打开项目,右键单击窗体,然后从上下文菜单中选择
View as Text
。您将看到Query1
组件的以下内容:注意,在
ParamData
中,没有Value.Type
;这是因为它是在读取Value
时设置的,而不是在保存表单时存储的。现在,再次右键单击,选择
View as Form
。返回Query1.Parameters
,编辑Value
,并将其设置为一个较高的数字(我使用了123456789
)。保存表单,然后再次保存
View as Text
。请注意Query1
信息:请注意,仍然没有存储
Value.Type
。请检查对象检查器以查找ValueType
,它现在显示为String
,尽管参数.DataType仍然为ftInteger
。这是由于IDE的流机制看到引号并相应地设置了Value.Type
所致。同样,它对正在运行的应用程序没有影响。IDE中的
Value.Type
并不重要。有趣的附注:在如上所述将
Value.Type
显示为String
之后,如果您再次将表单显示为文本,请删除Value
属性周围的'
字符和View as Form
,然后再次检查参数的Value.Type
,它将变为Integer
。这进一步表明它是在流处理过程中设置的,而在设计阶段则没有意义。fquxozlt2#
如果您正在寻找一种简单的方法来转换具有相同图像(字节数)的变量类型,请使用absolute关键字:
当然,这对于具有相同大小的所有数据类型都是类似的。