Всем привет! Знакомый попросил подкоректировать время в файле субтитров. После чего на скорую руку был написан скрипт. При выполнении начинает кушать много памяти и примерно через 40 секунд вылетает с ошибкой "Error allocating memory". Файл субтитров для обработки в аттаче.
AutoIT 3.3.6.1 OS:WIN_7 CPU:X64 OS:X64
Код:
$sFile = @ScriptDir&"DragonBall.txt"
$sReadFile = FileRead ($sFile)
$sOrigString = StringRegExp($sReadFile, '(?m)^\d{1,4}\r\n\d{2}:\d{2}:\d{2}\,.*', 3)
For $i = 0 To Ubound($sOrigString)-1
Local $sModString = $sOrigString[$i]
$bTimeParts = StringRegExp($sOrigString[$i], '\d{2}:\d{2}:\d{2}', 3)
$sModString = StringRegExpReplace($sModString, $bTimeParts[0],_SecAdd($bTimeParts[0],120))
$sModString = StringRegExpReplace($sModString, $bTimeParts[1],_SecAdd($bTimeParts[1],120))
$sReadFile = StringRegExpReplace($sReadFile, $sOrigString, $sModString )
Next
FileWrite (@ScriptDir&"DragonBall.Mod.txt",$sReadFile)
Func _SecAdd($tTime,$tSec)
$iTimeParts = StringSplit($tTime, ":")
$iTicks = ((3600 * $iTimeParts[1]) + (60 * $iTimeParts[2]) + $iTimeParts[3])
$iTicks += $tSec
$iHours = StringFormat("%02d", Int($iTicks / 3600) )
$iTicks = Mod($iTicks, 3600)
$iMins = StringFormat("%02d", Int($iTicks / 60) )
$iSecs = StringFormat("%02d", Mod($iTicks, 60) )
Return $iHours&":"&$iMins&":"&$iSecs
EndFunc
AutoIT 3.3.6.1 OS:WIN_7 CPU:X64 OS:X64