Добрый день.
Я недавно начал разбираться с AutoIt, написал скрипт, но меня не устраивает скорость его работы. Наверняка можно использовать какие-нибудь библиотеки или еще что-нибудь, что улучшило бы быстродействие скрипта. Надеюсь получить от вас, более опытных пользователей AutoIt, советы по доработке моего скрипта.
Данный скрипт служит для того, чтобы обрабатывать постоянно дополняющийся файл через DDE экспорт.
Файл, в который будут записываться данные может быть с любым расширением. Видел в хэлпе отдельные функции для работы с ini, потому предположил, что есть отдельные методы, возможно, более скоростные. Для меня расширение не критично. Кроме того, этот в этот скрипт добавлены временные отсечки, это только для разработки. В конечном варианте их не будет.
Я недавно начал разбираться с AutoIt, написал скрипт, но меня не устраивает скорость его работы. Наверняка можно использовать какие-нибудь библиотеки или еще что-нибудь, что улучшило бы быстродействие скрипта. Надеюсь получить от вас, более опытных пользователей AutoIt, советы по доработке моего скрипта.
Код:
$_FilePath='C:\!copy\'
$_FileStart='1.xlsx'
$_FileBuy='Buy.txt'
$_FileSell='Sell.txt'
$R=1; номер строки перед нужнымы данными
$StartDate="20111216"
$Buys=0
$Sells=0
GUICreate("Запись в файл", 300, 150)
GUICtrlCreateLabel($_FilePath&$_FileBuy, 30, 10)
GUICtrlCreateLabel($_FilePath&$_FileSell, 30, 30)
$stop_button = GUICtrlCreateButton("Стоп", 50, 100, 100)
GUISetState(@SW_SHOW)
$Begin=TimerInit()
$AllTime=TimerInit()
$Flag=0
While 1
$msg = GUIGetMsg()
Select
Case $msg = $stop_button
$Stoptime=TimerDiff($AllTime)
FileWriteLine($_FilePath&$_FileBuy,$Stoptime)
FileWriteLine($_FilePath&$_FileSell,$Stoptime)
Exit
ExitLoop
EndSelect
$R=$R+1
;If TimerDiff($Begin)>5000 Then
; Exit
;EndIf
$obj1 = ObjGet($_FilePath&$_FileStart)
$L1=$obj1.WorkSheets("1").Cells($R, 2).Value ;ячейка даты
$L2=$obj1.WorkSheets("1").Cells($R, 3).Value ;ячейка времени
$L3=$obj1.WorkSheets("1").Cells($R, 4).Value ; кол-во
$L4=$obj1.WorkSheets("1").Cells($R, 5).Value ; операция
$D=StringRight($L1,4)&StringMid($L1,4,2)&StringLeft($L1,2) ;дата к формату YYYYMMDD
$T=StringRegExpReplace($L2,":","")
$TT=StringLeft($T,4) ; время к формату HHMMSS
IF $D+0<>$StartDate+0 and $D<>"" Then
ContinueLoop
EndIf
IF $L1<>"" Then
IF $Flag=0 Then
$TS=$TT
$Flag=1
$Buys=0
$Sells=0
EndIf
If $TS=$TT then
If $L4="Купля" Then
$Buys=$Buys+$L3
EndIf
If $L4="Продажа" Then
$Sells=$Sells+$L3
EndIf
Else
$LBuy=$D&","&$TS&",0,0,0,0,"&$Buys ; формат вывода в строку покупок
$LSell=$D&","&$TS&",0,0,0,0,"&$Sells ; формат вывода в строку продаж
FileWriteLine($_FilePath&$_FileBuy,$LBuy)
FileWriteLine($_FilePath&$_FileBuy,(TimerDiff($Begin)/1000)/60)
FileWriteLine($_FilePath&$_FileSell,$LSell)
FileWriteLine($_FilePath&$_FileSell,(TimerDiff($Begin)/1000)/60)
$Begin=TimerInit()
$TS=$TT
If $L4="Купля" Then
$Buys=$L3
$Sells=0
EndIf
If $L4="Продажа" Then
$Sells=$L3
$Buys=0
EndIf
EndIf
Else
FileWriteLine($_FilePath&$_FileBuy,TimerDiff($AllTime))
FileWriteLine($_FilePath&$_FileSell,TimerDiff($AllTime))
Exit
EndIf
Sleep(100) ;пауза, чтобы не грузить процессор.
WEnd
Данный скрипт служит для того, чтобы обрабатывать постоянно дополняющийся файл через DDE экспорт.
Файл, в который будут записываться данные может быть с любым расширением. Видел в хэлпе отдельные функции для работы с ini, потому предположил, что есть отдельные методы, возможно, более скоростные. Для меня расширение не критично. Кроме того, этот в этот скрипт добавлены временные отсечки, это только для разработки. В конечном варианте их не будет.