Delphi 7将参数从整数更改为shortint

时间:2012-09-13 17:25:14

标签: delphi

我遇到的问题是,在IDE中关闭和重新打开文件会将我的数据集的参数(tparam)从整数更改为shortint。如果我将它们更改为整数,它似乎保存,但一旦lcosed并重新打开它返回shortint。 Delphi是否有办法将参数从Integer更改为Shortint

我在这里发现了类似的问题 http://www.delphigroups.info/2/1/284088.html

这似乎是一个错误,但是否有某种方式的解决方法?升级的Delphi版本不是我现在可以做的事情。 (第二次编辑中概述的复制步骤)

编辑:

如果将值类型更改为整数,只需在表单上放置一个带有参数的sql语句的TQUERY就会发生这种情况。保存并重新打开值类型然后是shortint。

再次编辑:

在Delphi 7中,创建新的应用程序。在表单上删除TQUery。将SQL脚本编辑为' select * from table where id =:idnumber。然后编辑参数。选择idnumber并将VALUE.TYPE更改为Integer。此时,您可以保存文件并关闭。当您重新打开该文件。并再次选择params选择idnumber它将保持类型ftInteger,但value.type将是Shortint。这是我希望保持整数的部分,但不幸的是它被转换为shortint。

1 个答案:

答案 0 :(得分:7)

我可以解释你所看到的行为,这不是一个错误。 (你的问题是误导性的,顺便说一句。根据编辑和评论,你的实际问题是“Delphi 7将Parameter.Value.Type从整数改为shortint”,这根本不是一回事。)

您正在检查Value.Type的{​​{1}},Param.Value未存储在.dfm文件中。从Value.Type流式传输表单并读取dfm或在运行时设置Value时,都会设置Value

我可以通过完全按照您的步骤证明这一点:

在新的空白表单上删除TQuery。将一些SQL添加到TQuery.SQL。我使用了SELECT Id FROM SomeTable WHERE Id = :id

点击...的{​​{1}},然后点击TQuery.Params对话框后的id参数。点击对象检查器中的Parameter Editor,然后将Value更改为Value.Type

保存项目和表单,然后关闭它们。重新打开项目,右键单击表单,然后从上下文菜单中选择Integer。您会看到View as Text组件的以下内容:

Query1

请注意,在object Query1: TQuery SQL.Strings = ( 'select id from sometable where id = :id') Left = 152 Top = 80 ParamData = < item DataType = ftInteger Name = 'id' ParamType = ptInput Value = 0 end> end 中,没有ParamData;那是因为它是在读取Value.Type时设置的,而不是在保存表单时存储。

现在再次右键单击,然后选择Value。返回View as Form,修改Query1.Parameters,并将其设置为较大的数字(我使用Value)。

保存表单,然后再次123456789。请注意View as Text信息:

Query1

请注意,仍然没有存储object Query1: TQuery SQL.Strings = ( 'select id from sometable where id = :id') Left = 152 Top = 80 ParamData = < item DataType = ftInteger Name = 'id' ParamType = ptInput Value = '123456789' end> end 。检查对象检查器是否为Value.Type,现在它显示为ValueType,即使Parameter.DataType仍为String。这是由IDE的流媒体机制查看引号,并相应地设置ftInteger引起的。

同样,它对您正在运行的应用程序没有影响。 IDE中的Value.Type无关紧要。

有趣的旁注:如上所述,在看到Value.TypeValue.Type后,如果您再次将该表单视为文本,请移除String属性周围的'个字符和Value,然后再次检查参数的View as Form,它变为Value.Type。这进一步表明它是在流式传输过程中设置的,并且在设计时没有任何意义。