我的应用程序在RHEL 5(TCL 8.4)上运行良好。但是在RHEL 7 64位TCL8.5中,数据库文件的来源不正确。默认情况下,该应用程序指向数据库中的最后一个记录文件。因此,我认为8.5处理文件源的方式可能存在问题。所以我创建了一个文件X并编写了以下代码。 (请忽略dbname和/ path,它可以正常工作)
文件X
#!/bin/sh
# \
exec tclsh "$0" "$@"
puts [package require Itcl]
namespace import ::itcl::*
puts $itcl::patchLevel
puts $itcl::library
set databases /dbname
set system ($databases,dbpath) /path
source File.class.tcl
source FareFile.class.tcl
puts [Fare.File formtitle]
source Record1File.class.tcl
puts [Fare.File formtitle]
我输入FareFile并使用在File.class.tcl中声明的formtitle方法打印表格标题(o / p:Fare Viewer)。然后我获取Record1File并打印FareFile格式标题(第一个),它打印Record1File的窗体标题。 formtitle方法将返回最新源文件的值。在8.4中不会发生这种情况
File.class.tcl:
class File {
variable fileinfo
variable recordarray
variable allads_flag 0
variable updates_is_lastkey 0
method formtitle {} {
variable fileinfo
return $fileinfo(formtitle)
}
}
FareFile.class.tcl
FareFile ::Fare.File
::Fare.File parse_fields {
tabtitle "Fares"
formtitle "Fare Viewer"
}
Record1File.class.tcl
Record1File ::Record1.File
::Record1.File parse_fields {
tabtitle "Record 1"
formtitle "Record 1 Viewer"
8.4 / RHEL 5中的输出:(8.5中的预期输出)
3.4
3.4.0
/path
Fare Viewer
Fare Viewer
8.5 / RHEL 7中的输出:
3.4
3.4.3
/path
Fare Viewer
Record 1 Viewer
如果您在两个平台上都看到输出,则其结果有所不同。请帮助
答案 0 :(得分:-1)
(鉴于问题的所有空白,这只是一个暂定答案,但我需要格式化功能:)
尝试以下方法,方法如下,重写方法formtitle
的主体脚本:
class File {
method formtitle {} {
set v variable
$v fileinfo
return $fileinfo(formtitle)
}
}
...并通过发表评论进行报告。