已从TCL8.4迁移到8.5,并且Im面临文件来源方面的问题

时间:2018-09-26 11:09:44

标签: tcl

我的应用程序在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

如果您在两个平台上都看到输出,则其结果有所不同。请帮助

1 个答案:

答案 0 :(得分:-1)

(鉴于问题的所有空白,这只是一个暂定答案,但我需要格式化功能:)

尝试以下方法,方法如下,重写方法formtitle的主体脚本:

class File {
    method formtitle {} {
            set v variable
            $v fileinfo
            return $fileinfo(formtitle)
    }
}

...并通过发表评论进行报告。