Author Topic: Как сделать чтобы большое количество картинок через некоторое время удалялись?  (Read 1950 times)

0 Members and 2 Guests are viewing this topic.

Dreight

  • Освоившийся
  • **
  • Posts: 40
    • View Profile
Добрые люди подсказали как сделать сделать так, чтобы в определенной области сканировалась картинка, сохранялась, потом по этой картинке делались клики в течении 10-ти минут. После 10-ти минут картинка удаляется.

Code: (clickermann) [Select]
GETSCREEN
SCREENSHOTEX(х1,у1, х2,у2, "Image_", 0)
WAITMS(500)

$time = $_time_t + 600
WHILE($time > $_time_t)
GETSCREEN
IF_PICTURE_IN (х1,у1, х2,у2, "screens\Image_0000.bmp", -1, 100)
LCLICK($_return1, $_return2)
WAITMS(100)
ELSE
WAITMS(50)
END_IF
END_CYC

TFCLEAR("screens\Image_0000.bmp", 1)
WAIT(1)

Теперь у меня немного сложнее задача. Надо чтобы в определенной области сканировалась картинка, сохранялась, на нее ставился таймер на удаление (например 10 мин), происходил клик по картинке и скрипт начинался сначала, сохранялась бы новая картинка№2(если же в этом месте старая картинка нужно ожидать 1 мин), и уже на нее ставится новый таймер(тоже 10 мин), клик, начать скрипт сначала. И так до бесконечности (ну, условно до бесконечности, вроде в clickermanne максимальное количество картинок с одним названием 10 000).

Я так понимаю что для того, чтобы к каждой картинке прикручивать удаление через определенное время нужно задействовать массивы. Вроде прочитал статью про массивы, но так ничего и не понял... Подскажите пожалуйста, как можно прикручивать таймер на удаление к каждой новой картинке?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Quote
...если же в этом месте...
А тебе точно нужно ИСКАТЬ картинку? Или она всегда в одном строгом месте и тебе нужно определить какая из бывших?
Может и никаие картинки сохранять не нужно.
В 90% случаев, когда вот так пытаются сохранять/искать просто неверный глобальный подход.
Ты объясни что происходит и что нужно сделать, может посоветуют "как". Возможно это будет не тот путь которым ты шёл.


dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
скорее всего Vint прав, много лишних движений с этими сохранениями  скринов.
но задача по таймеру удаления мне показалась очень даже интересной.
накидал скрипт для версии 4.12 , вроде работает, для индивидуальных нужд можно подрихтовать .

Code: (clickermann) [Select]
//для версии не ниже 4.12 !!!!

$timer_del = 10    //время хранения файлов в сек
//$path = "screens\"  //путь к файлам. убрать "//" из начала этой строки, ОБЯЗАТЕЛЬНО!!! знаки добавлены для правильного отображения на форуме.


//основной поток создает файлы с периодичностью от 2 до 5 сек
GETSCREEN                         
SCREENSHOTEX(0,0, 23,23, "Image_", 0)
wait(RND(2,5))

//............................................................


//поток проверяет наличие новых файлов и удаляет просроченные.
THREAD(del)
   getfilelist($arr_files,STRCONCAT($path,"*.bmp*"))
   
   IF(arrsize($arr_files)>arrsize($arr_temp))
      $temp = arrsize($arr_files)-arrsize($arr_temp)
      for($a=0, $a<$temp)
         arrpush($arr_temp, 0)
         arrpush($arr_timer, 0)
      end_cyc
   END_IF
   
   
   for($i=0,$i<arrsize($arr_files))
     
      $check=0
      FOR($a=0,$a<arrsize($arr_temp))
         IF($arr_temp[$a] = $arr_files[$i])
            $check=1
            $a=arrsize($arr_temp)
         else
            $check=0
         END_IF
      END_CYC
      IF($check=0)
         FOR($a=0,$a<arrsize($arr_temp))
            IF($arr_temp[$a] = 0)
               $arr_temp[$a] = $arr_files[$i]
               $arr_timer[$a] = $_time_t
               $a=arrsize($arr_temp)
            END_IF
         END_CYC
      END_IF
   end_cyc
   
   
   for($a=0, $a< arrsize($arr_temp)) //просмотр массива, можно убрать.
      print($arr_temp[$a])
   end_cyc
   print(" ")
     
   FOR($a=0,$a<arrsize($arr_timer))
      IF(($_time_t-$arr_timer[$a] > $timer_del)&($arr_timer[$a]>0))
         print("del ", $arr_temp[$a])
         TFClear(STRCONCAT ($path,$arr_temp[$a]),1)
         $arr_temp[$a] = 0
         $arr_timer[$a] = 0
      END_IF
   END_CYC
     
   waitms(200)
END_THREAD