請問 AB 中如何定如 VB 的全域變數
本帖最後由 nicowang 於 13-6-25 14:04 編輯如題
小弟需要在AB中設一個全域變數 GLOBAL ,一直持續累計計算,
但實際在AB中,AB會要初始這個變數,結果每次啟動這變數就被歸零 (初始化)
所以之前的計算就不見了 ... >"<
本帖最後由 電腦人 於 13-6-25 16:59 編輯
VB 每次啟動,全域變數照樣歸零
我的解決方式是把全域變數"存成文字檔",然後要調用時,去"讀取文字檔"
類似遊戲的SAVE/LOAD記錄
AMIBROKER有讀取文字檔這功能嗎?不知
MULTICHARTS好像也只有輸出文字檔,我沒看過有讀入文字檔的功能
所有的全域變數只在程式啟動期間具有生命力,重啟程式後當然是歸零
在程式生命週期
http://www.amibroker.com/guide/keyword/global.html
要是在生命週期外,就真的要read file 讀檔
http://www.amibroker.com/guide/afl/afl_view.php?id=228 好問題,推一下。 StaticVarGet( ''varname', align = True' )
StaticVarSet( ''varname'', value )
ex.
X=Nz(StaticVatGet("VaribleX"))
X can be processed within formula
at the end of formula
StaticVarSet("VaribleX", X)
本帖最後由 nicowang 於 13-6-25 20:23 編輯
謝謝大大們回答,我會試試看 本帖最後由 nicowang 於 13-6-25 20:23 編輯
電腦人 發表於 13-6-25 16:42 static/image/common/back.gif
VB 每次啟動,全域變數照樣歸零
我的解決方式是把全域變數"存成文字檔",然後要調用時,去"讀取文字檔"
VB 的全域變數可以再 module 中宣告,之後所有的method 就都可以共用,不會init
calvinhorng 發表於 13-6-25 19:38 static/image/common/back.gif
StaticVarGet( ''varname', align = True' )
StaticVarSet( ''varname'', value )
感謝 ... 我待會試試看
本帖最後由 nicowang 於 13-6-25 20:36 編輯
lwhuang 發表於 13-6-25 17:50 static/image/common/back.gif
在程式生命週期
http://www.amibroker.com/guide/keyword/global.html
要是在生命週期外,就真的要read fil ...
謝謝大大 ... 這段我看過,但一樣會被初始化
感謝 ^^
不過像 calvinhorng 大大提供的方式,丟到 static 去,需要再取回,可以一試。
本帖最後由 電腦人 於 13-6-25 23:42 編輯
nicowang 發表於 13-6-25 20:22 static/image/common/back.gif
但實際在AB中,AB會要初始這個變數,結果每次啟動這變數就被歸零 (初始化)
...
並不是 在所有method可以共用,指的是在"整個程式執行時間"可以共用
但只要你關閉程式,然後再開一次程式(每次重新啟動程式)時,此時你的全域變數仍然是在初始狀態
所以唯一解就是需要一個外部變數記住這個變數目前的值
當然,不關掉程式的話,設好的全域變數是不會被清掉的,除非是程式不支援全域變數或是設定錯誤
在MULTICHARTS上的全域變數是自動判別的,但只要你程式重新編譯或載入一次,對不起,系統一樣把你的全域變數歸零,沒得商量
AB就真的沒研究了
但你有提到VB,VB上的解就很簡單,存個文字檔保留就好,你關機關程式關電源後,再重新啟動程式,一樣可以到磁碟去讀去之前的資料,此時全域變數就可以用這技巧不被破壞。
AB這個軟體是否有DEBUG工具,用類似單步執行的方式去看變數是怎麼被讀寫的,這樣最快
電腦人 發表於 13-6-25 23:37 static/image/common/back.gif
並不是 在所有method可以共用,指的是在"整個程式執行時間"可以共用
但只要你關閉程式,然後再開一次程式 ...
了解, 感謝大大回答
AB的DEBUG能力好像不強,也許我初學還不清楚,所以先保留說法,待日後驗證。
nicowang 發表於 13-6-26 02:43 static/image/common/back.gif
了解, 感謝大大回答
AB的DEBUG能力好像不強,也許我初學還不清楚,所以先保留說法,待日後驗證。
...
建議你看一下 http://www.amibroker.com/members/library/formula.php?id=1225
裡面有變數與Debug的使用 nicowang 發表於 13-6-25 20:32 static/image/common/back.gif
謝謝大大 ... 這段我看過,但一樣會被初始化
感謝 ^^
一般語言的全域變數所指,都是這樣啊
你要的是應該是像ini檔那樣的東西,那不叫全域變數
http://www.amibroker.org/userkb/2007/04/24/persistent-variables/
頁:
[1]
2