2016-02-29 244 views
1

我有一個輸入文件和一個批處理文件。當使用系統命令執行批處理文件時,會生成相應的輸出文件 。Qt:讀取文本文件並在LineEdit中顯示

現在我想從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語句確實在編輯器中給出了答案,確認輸出文件確實包含所需的文本。我很困惑這種情況。

回答

1

顯示的代碼段沒有任何問題。

請注意,var是一個局部變量。第二個和第三個代碼片段是否在同一個上下文中?如果他們採用相同的方法,並且中間沒有觸及var,則它將起作用。

如果片段屬於同一類的不同方法,那麼比實例變量(@var)將解決該問題。

如果這一切都不起作用,請使用Pry來解決問題。按照鏈接找到先決條件和如何使用。將binding.pry放在您的代碼中,您的程序將停止在該行。然後檢查你的變量在做什麼。

+0

「RB」其實我已經嘗試過在你的第三個片段的代碼。它確實有效。問題在別的地方。 – bogl

+0

^1爲bindings.pry,能夠找出問題 – topjay

0

的嘗試,而不是「R」

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