manlty 发表于 2010-9-21 03:43:34

变量一次性使用后怎么丢弃?

本帖最后由 manlty 于 2010-9-21 12:15 编辑

最近在写一个程序,就是读取一个外部软件中的一个动态数据(也就是控件static上一个随时接收到的新提示,具体格式比如“09:40:41-委托单:65/成交2手/IF1009/卖出/平仓/投机/2942.40/10”,
程序要求将同一秒的数据都累加起来(当然这个同一秒不是本地机器上的时间来判断,而是动态数据里包含的时间字符串)
我的代码:AdlibRegister(" tradecount", 36);;;;;36毫秒的周期去跟踪统计外部软件上的数据

functradecount()
$jkold = $jktxt
global $jktxt = ControlGetText($inread, "", $Bstatic)
$psjk = StringSplit($jktxt, "/")
$tm = StringRegExp($psjk, '\D{2}(\d{0,})\D', 3)   ;;;; 匹配“成交2手”中的“2”
if StringCompare($jktxt, $jkold ) <> 0 thenAssign("tm"&stringleft($Tstr,8),Eval("tm"&stringleft($Tstr,8))++ Number($tm,2);;;;当有新数据时累加
if Eval("tm"&stringleft($Tstr,8))>10   then ........                        ;;;;;;累加到10以上时执行操作.....
end其中动态变量Assign("tm"&stringleft($Tstr,8),实际上是只要超过该秒就有新的按照时间字符串来定义的新的变量名,上一秒的定义的变量其实应该清除,要不然,随着时间推移累积下很多冗余变量,水平有限,不知道怎么在代码中加入语句,将过时的变量清除

zps26 发表于 2010-9-21 10:13:16

本帖最后由 zps26 于 2010-9-21 10:33 编辑

应把”当有新数据时累加“单独写成一个累加求和函数。顺便问一下,累计交易软件里而不是股票软件的数据有什么作用

manlty 发表于 2010-9-21 12:18:02

监控成交回报

republican 发表于 2010-9-21 12:51:36

Assign("tm"&stringleft($Tstr,8),0)

manlty 发表于 2010-9-21 19:05:06

Assign("tm"&stringleft($Tstr,8),0)
republican 发表于 2010-9-21 12:51 http://www.autoitx.com/images/common/back.gif


    赋值为0,还是存在这个变量和占着空间啊,这个循环的特点是,每次读完累加了一秒内的数据后,又建立一个新的变量,用于存取下一秒的数据,已经过去的变量就没用了,但是还在占着内存空间,我是说新的变量建立的时候怎么删除旧的变量

republican 发表于 2010-9-21 19:59:37

在Au3中,先赋值,再赋予0,可意味着销毁。

你要是这么介意,就应该减少变量的占用。
页: [1]
查看完整版本: 变量一次性使用后怎么丢弃?