我有一个输入文件和一个批处理文件。使用System命令执行批处理文件时, 生成相应的outfile。
现在我希望该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语句确实在编辑器中给出答案,确认输出文件确实包含所需的文本。我对这种情况很困惑。
答案 0 :(得分:1)
显示的代码片段没有任何问题。
请注意var
是一个局部变量。第二个和第三个代码片段是否在同一个上下文中?如果它们使用相同的方法,并且var
之间没有触及它,那么它将起作用。
如果片段属于同一个类的不同方法,那么实例变量(@var
)将解决问题。
如果一切无效,请使用Pry来解决问题。点击链接查找先决条件和使用方法。将binding.pry
放在您的代码中,您的程序将停在该行。然后检查你的变量在做什么。
答案 1 :(得分:0)
尝试' rb'而不是' r'
File.open("C:/ORG_Class0178_out.txt", 'rb').each do |line|
var = line[350..357]
puts var