找回密码
 加入
搜索
查看: 2271|回复: 5

[AU3基础] 变量一次性使用后怎么丢弃?

  [复制链接]
发表于 2010-9-21 03:43:34 | 显示全部楼层 |阅读模式
本帖最后由 manlty 于 2010-9-21 12:15 编辑

最近在写一个程序,就是读取一个外部软件中的一个动态数据(也就是控件static上一个随时接收到的新提示,具体格式比如
“09:40:41-委托单:65/成交2手/IF1009/卖出/平仓/投机/2942.40/10[7205]”

程序要求将同一秒的数据都累加起来(当然这个同一秒不是本地机器上的时间来判断,而是动态数据里包含的时间字符串)
我的代码:
AdlibRegister(" tradecount", 36)  ;;;;;36毫秒的周期去跟踪统计外部软件上的数据

func  tradecount()
$jkold = $jktxt
global $jktxt = ControlGetText($inread, "", $Bstatic)
$psjk = StringSplit($jktxt, "/")
$tm = StringRegExp($psjk[2], '\D{2}(\d{0,})\D', 3)   ;;;; 匹配“成交2手”中的“2”
if StringCompare($jktxt, $jkold ) <> 0 then  Assign("tm"&stringleft($Tstr,8),Eval("tm"&stringleft($Tstr,8))++ Number($tm[0],2)  ;;;;当有新数据时累加
if Eval("tm"&stringleft($Tstr,8))>10   then ........                        ;;;;;;累加到10以上时执行操作.....
end
其中动态变量Assign("tm"&stringleft($Tstr,8),实际上是只要超过该秒就有新的按照时间字符串来定义的新的变量名,上一秒的定义的变量其实应该清除,要不然,随着时间推移累积下很多冗余变量,水平有限,不知道怎么在代码中加入语句,将过时的变量清除
发表于 2010-9-21 10:13:16 | 显示全部楼层
本帖最后由 zps26 于 2010-9-21 10:33 编辑

应把”当有新数据时累加“单独写成一个累加求和函数。顺便问一下,累计交易软件里而不是股票软件的数据有什么作用
 楼主| 发表于 2010-9-21 12:18:02 | 显示全部楼层
监控成交回报
发表于 2010-9-21 12:51:36 | 显示全部楼层
Assign("tm"&stringleft($Tstr,8),0)
 楼主| 发表于 2010-9-21 19:05:06 | 显示全部楼层
Assign("tm"&stringleft($Tstr,8),0)
republican 发表于 2010-9-21 12:51



    赋值为0,还是存在这个变量和占着空间啊,这个循环的特点是,每次读完累加了一秒内的数据后,又建立一个新的变量,用于存取下一秒的数据,已经过去的变量就没用了,但是还在占着内存空间,我是说新的变量建立的时候怎么删除旧的变量
发表于 2010-9-21 19:59:37 | 显示全部楼层
在Au3中,先赋值,再赋予0,可意味着销毁。

你要是这么介意,就应该减少变量的占用。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 22:06 , Processed in 0.078504 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表