1

我有一个输入文件和一个批处理文件。使用 System 命令执行批处理文件时,会生成相应的输出文件。

现在我希望该 outfile 中的特定文本(位置 350 到 357)显示在我的 lineedit 小部件上

这是我的代码的那一部分:

 system("C:/ORG_Class0178.bat")

现在将生成outfile

 File.open("C:/ORG_Class0178_out.txt", 'r').each do |line|
    var = line[350..357]
    puts var   

# 测试文件是否被读取。

    @responseLineEdit = Qt::LineEdit.new(self)
    @responseLineEdit.setFont Qt::Font.new("Times NEw Roman", 12)
    @responseLineEdit.resize 100,20
    @responseLineEdit.move 210,395 
    @responseLineEdit.setText("#{var}")
 end 

当我使用 puts 语句测试是否正在读取文件时,我在编辑器中得到了所需的确切输出。但是,LineEdit 上没有显示相同的文本。欢迎提出建议。

编辑:这里的有线观察。当我尝试读取输入文件并显示它时它工作正常,但是它不适用于输出文件。puts 语句确实在编辑器中给出了答案,确认输出文件确实包含所需的文本。我对这种情况感到困惑。

4

2 回答 2

1

显示的代码片段没有任何问题。

请注意,这var是一个局部变量。第二个和第三个代码片段是否在同一个上下文中?如果它们采用相同的方法,并且var在两者之间没有触及,它将起作用。

如果片段属于同一类的不同方法,则实例变量 ( @var) 将解决问题。

如果所有这些都没有帮助,请使用Pry来解决问题。按照链接查找先决条件以及如何使用。放入binding.pry您的代码,您的程序将在该行停止。然后检查你的变量在做什么。

于 2016-02-29T20:32:38.070 回答
0

尝试 'rb' 而不是 'r'

File.open("C:/ORG_Class0178_out.txt", 'rb').each do |line|
    var = line[350..357]
    puts var  
于 2016-02-29T20:38:32.080 回答