2013-06-21 31 views
0

這是我試圖從函數調用的代碼。爲什麼我從函數獲得調用代碼?

如果我本身

#3:: 
FileRead, OutputVar, C:\temp\test.txt 
msgbox %OutputVar% 
#SingleInstance, force 

Gui, Color, White 
Gui, -caption +toolwindow +AlwaysOnTop 
Gui, font, s30 bold, Arial 
Gui, add, text, vTX cRed TransColor, %OutputVar% 
Gui, Show, % "x" A_ScreenWidth-1500 " y" A_ScreenHeight-900 ,TRANS-WIN 
WinSet, TransColor, White, TRANS-WIN 
return 

使用當我打電話把在函數並調用它從那裏我得到下面的錯誤它工作沒有任何問題的罰款。

:*:11:: 
Run calc.exe 
numcodee() 
return 

numcodee() 
{ 
FileRead, OutputVar, C:\temp\test.txt 
msgbox %OutputVar% 
#SingleInstance, force 

Gui, Color, White 
Gui, -caption +toolwindow +AlwaysOnTop 
Gui, font, s30 bold, Arial 
Gui, add, text, vTX cRed TransColor, %OutputVar% 
Gui, Show, % "x" A_ScreenWidth-1500 " y" A_ScreenHeight-900 ,TRANS-WIN 
WinSet, TransColor, White, TRANS-WIN 
} 

錯誤從功能
enter image description here

+1

任何具有附加變量的控件必須是靜態的或全局的。這是通過在你的函數中添加全局VarName來解決的。 (在你的情況下,全球TX) –

回答

1

打電話的時候,它的GUI要求其變量保持在範圍上的時間超過您允許。它已經有一段時間了,因爲我對AKH做了大量的工作,但是我猜想是你的OutputVar導致了錯誤。解決這個問題的方法很簡單,就是將數據從函數中移出,並將其列在文件的上面某處)

需要記住的一點是,一旦函數結束,所有在其中聲明的變量都會掉出來的範圍,你將無法使用它們,GUI所關心的是它需要的東西將會從它下面掉下來。

+0

我能夠通過聲明全局變量並銷燬gui來修復它。 '全球 FileRead,OutputVar,C:\ temp \ test.txt Gui,Destroy' – Mowgli

相關問題