Собственно приведу весь скрипт, может поможете его оптимизировать. Он нужен для упрощения создания скринов в игре. И должен прописывать координаты.
#name "Скриншот"
$h = hgetpid($_hwnd_self)
HSET($h,0)
$pos_x1 = 0
$pos_y1 = 0
$pos_x2 = 840
$pos_y2 = 0
$width = 840
$height = 610
$win_l = HGET (377, 200)
WNDPOS ($win_l, $pos_x1, $pos_y1)
WNDSIZE ($win_l, $width, $height)
HSET($win_l,1)
$no_line = 0
$file = inputbox("Введите название скриншота", "", 100)
$z = dialogbox("Наведите на левый верхний угол", 1, 100 )
if ($z = 2)
halt
end_if
$x1 = $_xmouse
$y1 = $_ymouse
$z = dialogbox("Наведите на нижний правый угол", 1, 100 )
$x2 = $_xmouse
$y2 = $_ymouse
sub(screen_1)
$z = dialogbox("Уберите мышку и нажмите ОК", 1, 5000)
MOVE (0,0)
GETSCREEN
SCREENSHOTFIX ($x1,$y1, $x2,$y2, StrConcat($file, ".bmp"))
end_sub
screen_1()
TFREADARR("var.cms", $arr)
print($arr[0])
FOR($a=0, $a < arrsize($arr))
IF(STRPOS($arr[$a], StrConcat("$",$file,"_x1")) != 0)
print("Замена")
INC($a)
TFDELETE("var.cms", $a)
TFWRITE("var.cms",StrConcat("$",$file,"_x1 = ",$x1),$a)
TFDELETE("var.cms", $a+1)
TFWRITE("var.cms",StrConcat("$",$file,"_y1 = ",$y1),$a+1)
TFDELETE("var.cms", $a+2)
TFWRITE("var.cms",StrConcat("$",$file,"_x2 = ",$x2),$a+2)
TFDELETE("var.cms", $a+3)
TFWRITE("var.cms",StrConcat("$",$file,"_y2 = ",$y2),$a+3)
$no_line = 1
//$a = arrsize($arr)+1
END_IF
INC($a)
END_CYC
IF($no_line = 0)
print("нет замены")
TFWrite("var.cms",StrConcat("$",$file,"_x1 = ",$x1))
TFWrite("var.cms",StrConcat("$",$file,"_y1 = ",$y1))
TFWrite("var.cms",StrConcat("$",$file,"_x2 = ",$x2))
TFWrite("var.cms",StrConcat("$",$file,"_y2 = ",$y2))
TFWrite("var.cms","")
END_IF
halt
А проблема главная в этом месте.
TFREADARR("var.cms", $arr)
print($arr[0])
FOR($a=0, $a < arrsize($arr))
IF(STRPOS($arr[$a], StrConcat("$",$file,"_x1")) != 0)
print("Замена")
INC($a)
TFDELETE("var.cms", $a)
TFWRITE("var.cms",StrConcat("$",$file,"_x1 = ",$x1),$a)
TFDELETE("var.cms", $a+1)
TFWRITE("var.cms",StrConcat("$",$file,"_y1 = ",$y1),$a+1)
TFDELETE("var.cms", $a+2)
TFWRITE("var.cms",StrConcat("$",$file,"_x2 = ",$x2),$a+2)
TFDELETE("var.cms", $a+3)
TFWRITE("var.cms",StrConcat("$",$file,"_y2 = ",$y2),$a+3)
$no_line = 1
//$a = arrsize($arr)+1
END_IF
INC($a)
END_CYC
Почему то не всегда находит строку в IF и соответственно дублирует координаты.
Для проверки писал имя 1, первый раз не нашел, последующие находил и заменял. При этом дубль уже сделался.