本帖最后由 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),实际上是只要超过该秒就有新的按照时间字符串来定义的新的变量名,上一秒的定义的变量其实应该清除,要不然,随着时间推移累积下很多冗余变量,水平有限,不知道怎么在代码中加入语句,将过时的变量清除 |