
求教大神幫忙做個基本的框架,真心感謝。
事件AA和CC是反復出現的,需要在文本檔案中查找到每輪AA和CC的時間,然后時間做減法。
之前只寫過一些簡單的腳本,第一次寫小程式用于作業。
因為只學過基本的VB,有3個難點:
1. 怎么抓取事件AA,CC的前面的時間引數
2. 如何保證第二輪查詢時間引數,從第一輪查詢結束的位置之后開始,而不是又重頭查詢。
3. 時間引數如何做比較(減法)?
uj5u.com熱心網友回復:
剛注冊的id,還沒有積分。抱歉,抱歉
uj5u.com熱心網友回復:
先說“2.”的處理:你貼圖的資料樣本,AA、BB、CC這3個事件是依次出現的,
如果以“每一行資料”作為1個元素放入字串陣列arrData( )中,那么:
AA事件對應的下標,就是 3*n (n是“組序號”,n = 0, 1, 2, ……),
而CC事件所對應的下標,則是3*n+2 (n的含義同上)。
就是說:AA事件對應的資料是arrData(3*n)、CC事件對應的資料是arrData(3*n+2)。
如果把“整個檔案的資料”讀到一個字串變數中,
那么只有用instr( )函式“按關鍵字找位置”、用Mid( )函式截取“每行資料”了。
再說“1.”的處理:
輸出文本的“日期、時間”是固定格式對齊的,無論以何種方式“取得了1行資料”,那么可以用Left( )函式,
把左邊19個字符內容,用CDate( ) 函式轉換成“日期值”(包含時間在內),用于后面“3.”的運算處理。
不過,這個只支持到“秒”,秒的小數部分無法處理(所以說只能取左邊19個字符)。
如果有必要的話,只能自己單獨處理一下小數部分。
如果只需要“時間”,可以用Mid( )函式,截取出“時間”的那一段文本。
你的“第3.”說得有點含義不明確,不知道你的目的是什么。
但我剛在上面說的“CDate( )函式”轉換結果,是可以直接用于VB的“關系比較”的。
另外DateDiff( )函式可以用于“計算日期/時間差值”的,具體用法你可以百度一下。
uj5u.com熱心網友回復:
補充說明一下:在使用VB6的 CDate( )函式 把“字串格式”的日期時間文本轉換成“日期型別值”時,
文本中的“年月日”之間只能用 / 或者空格分隔(空格可以有多個,但 / 字符每處最多有1個)。
因此按我在2樓說的“截取左邊的字串”之后,還得把日期中的“-”替換成/或空格之后,
才能作為CDate( )函式的引數進行轉換。
uj5u.com熱心網友回復:
非常感謝您的答復。第三條的目的,是為了計算2個事件的間隔時間,比如得出AA到CC用了多長的時間。
還有第一條,其實檔案中并不是只有這三行重復出現的,中間夾雜著很多其他的記錄資訊。軟體的目的就是從大量的記錄檔案(多個log檔案中)反復抓取2個事件,然后算每一輪的間隔時間,然后列印出來。
uj5u.com熱心網友回復:
如果直接用Cdate( )處理那個時間,“秒”不能帶小數,時間差就會有“±1秒”的誤差。若想“更精確”,那么就得自己計算時間差,
或者用CDate( )+DateDiff( )函式計算時間差、再利用“小數部分”的資料進行修正。
即使是有“多個事件”,AA事件與CC事件之間的間隔不確定,
如果“資料”在字串陣列中,也可以自己按“下標”找出對應的“每組事件”的資料啊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/43627.html
標籤:非技術類
上一篇:VB如何判斷陣列為空矩陣
