Автокликер Clickermann :: Форум
		Основной раздел => Общие вопросы => Topic started by: Qwerry on October 11, 2017, 03:25:33 PM
		
			
			- 
				Доброго времени суток.
Имеется папка, в которой находится несколько картинок (их количество может меняться). Нужно занести в массив все названия файлов из этой папки.
Подскажите, пожалуйста, как можно реализовать? 
(Конечная цель - поиск  по очереди этих картинок. Понимаю, что можно назвать их в духе 1, 2, 3, но не хотелось бы задавать количество картинок вручную)
			 
			
			- 
				Требуется последняя бетта 4.13 Там функция GETFILELIST заработала как надо.
http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510 (http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510)
$path = "Image\" // Путь до папки с картинкой
GETFILELIST($a_image, STRCONCAT($path,"*.bmp")) // Получаем список файлов в массив
GETSCREEN
FOR($i=0,$i<ARRSIZE($a_image))  // Перебор списка  
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT($path,$a_image[$i]), -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF    
END_CYC
			 
			
			- 
				
Классно) Спасибо, буду осваивать новую версию :)
			 
			
			- 
				
Требуется последняя бетта 4.13 Там функция GETFILELIST заработала как надо.
http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510 (http://crapware.aidf.org/forum/index.php?topic=356.msg23510#msg23510)
$path = "Image\" // Путь до папки с картинкой
GETFILELIST($a_image, STRCONCAT($path,"name[b]*[/b].bmp")) // Получаем список файлов в массив
GETSCREEN
FOR($i=0,$i<ARRSIZE($a_image))  // Перебор списка  
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, STRCONCAT($path,$a_image[$i]), -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   END_IF    
END_CYC
вопрос следующий, как выполнить файл из списка при помощи radiobox("Выберете пункт", $arr[0]):
у меня есть проекты по Работе, Домашние, Игры, Прочие... работа_name.cms, картинки_name.cms...
GETFILELIST($arr, "Script\name[b]*[/b].cms")) // Получаем список файлов в массив
for($i=0, $i< arrsize($arr))
   print($arr[$i])
end_cyc
$res = radiobox("Выберете пункт", [b]$arr[/b]) - как вместо $arr вставить переменную (количество) найденных файлов
...
а после выбора реализовать запуск нужного скрипта?
другими словами хочу создать меню проектов.
			 
			
			- 
				Очевидно так, а в чем смысл.
GETFILELIST($arr, "Script\name[b]*[/b].cms") // Получаем список файлов в массив
for($i=0, $i<arrsize($arr))
   print($arr[$i])
end_cyc
$res = RADIOBOX("Выберете пункт", arrsize($arr))
			 
			
			- 
				
Очевидно так, а в чем смысл.
$res = RADIOBOX("Выберете пункт", arrsize($arr))
так он выводит количество найденных файлов
я пока остановился на таком решении:
TFCLEAR("file.cms", 0)
...
getfilelist($arr, $list) //$list предменю с путями, тут не указан
for($i=0, $i< arrsize($arr))
   print($arr[$i])
end_cyc
for($i=arrsize($arr), $i< 21)
   ARRPUSH($arr, "пусто")
end_cyc
$res = radiobox("Выберете пункт", $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13], $arr[14], $arr[15], $arr[16], $arr[17], $arr[18], $arr[19], $arr[20])
if ($res > 0)
   print("Вы выбрали: ", $arr[$res-1])
   DEFINE($var, $arr[$res-1])
   
   TFREADARR($var, $a)
   TFWRITEARR("file.cms", $a)
else
   print("Вы ничего не выбрали")
end_if
WAIT(3)
#include "file.cms"
haltно возникла проблемма с #include "file.cms" он почему то запускается первым, то есть я указал на нужный файл, он его записывает в file.cms, но #include запускается до выполнения всего скрипта, получается, при последующих запусках, запускается предыдущий файл, хотя файл обновляется сразу...
			 
			
			- 
				Кирил  описал выше  в чем дело. Так что скрипт должен выглядеть примерно так:
$list = "E:\test\*.*"
getfilelist($arr, $list) 
for($i=0, $i< arrsize($arr))
   print($arr[$i])
end_cyc
for($i=arrsize($arr), $i< 21)
   ARRPUSH($arr, "пусто")
end_cyc
$res = radiobox("Выберете пункт‚", $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13], $arr[14], $arr[15], $arr[16], $arr[17], $arr[18], $arr[19], $arr[20])
if ($res > 0)
   print("Вы выбрали: ", $arr[$res-1])
else
   print("Вы ничего не выбрали")
end_if
WAIT(1)
SWITCH($res)
   CASE(1)
      #include "E:\test\test1.cms"
   CASE(2)
      #include "E:\test\test2.cms"
   CASE(3)
      #include "E:\test\test3.cms"
   CASE(4)
      #include "E:\test\test4.cms"
   CASE(5)
      #include "E:\test\test5.cms"
END_SWITCH
halt
Только вот у меня почему то в последней версии КМ инклуд с полным путем не работает  :-\ . Пишет что файла такого нет... а он то есть. Не пойму в чем дело, мож защита в ОС какая...
Глянул в справку:
#include - Вставляет в это место содержимое текстового файла из папки проекта.
так что придется извернуться как-то по другому.
			 
			
			- 
				
Только вот у меня почему то в последней версии КМ инклуд с полным путем не работает  :-\ . Пишет что файла такого нет... а он то есть
Вероятно, русское название одной из папок пути или не читаемые символы в названии.
Да не, потестил  в разных каталогах, и прямо из корня диска, ни в какую. В 4.13 выдает ошибку об отсутствии файла, в старших версиях просто скрипт с инклудом не запускается. 
Если путь относительно папки проекта, то все норм, даже если инклуд в подкаталоге (относительно папки проекта).
			 
			
			- 
				
Только вот у меня почему то в последней версии КМ ...
решили проблему по другому, но столкнулись с новой проблемой :) на 4.12 работает, а на 4.13 нет
$list_1 = INPUTBOX("message", "", 10)
   print($list_1)
if ($list_1 = 0)
   print("Отмена")
   halt
end_if
getfilelist($arr, "*"$list_1"*.cms")
   print($arr)
for($i=arrsize($arr), $i< 21)
   ARRPUSH($arr, "Пусто")
end_cyc
$list_2 = radiobox("Выберете название скрипта:", $arr[0], $arr[1], $arr[2], $arr[3], $arr[4], $arr[5], $arr[6], $arr[7], $arr[8], $arr[9], $arr[10], $arr[11], $arr[12], $arr[13], $arr[14], $arr[15], $arr[16], $arr[17], $arr[18], $arr[19], $arr[20])
if ($list_2 > 0)
   $list_3 = DIALOGBOX("Вы выбрали: "$arr[$list_2-1],4,2)
   
   if ($list_3 = 6)
      print("Вы выбрали: ",$arr[$list_2-1])
      TFCLEAR("Script_Start_Config.cms", 0)
      TFREADARR($arr[$list_2-1], $ara)
      TFWRITEARR("Script_Start_Config.cms", $ara)
      TFWRITE("Script_Start_Config.cms", "#Autorun")
      EXECUTE("Script_Start_Config.bat")
      HALT(1)
   else
      print("Отмена")
      halt
   end_if
else
   print("Отмена")
   halt
end_if"*"$list_1"*.cms" в 4.12 понимает что от него хотят, ищет искомое слово на кириллице, в 4.13 на русском точно не ищет если проблема в этом.
 start ../Clickermann.exe Script_Start_Config.cms
			 
			
			- 
				А что это вообще такое?
getfilelist($arr, "*"$list_1"*.cms")
что за набор символов.
Возможно там должно быть что-то вроде этого:
getfilelist($arr, STRCONCAT($list_1, "\*.cms"))
Ещё с ранних сообщений кочует вот такая строка с обрывками тэгов, тоже хрень
GETFILELIST($arr, "Script\name[b]*[/b].cms"))
			 
			
			- 
				Может, ну его встроенный радио? Ему жёстко прописывать нужно пункты и с этим или морока или некрасиво.
#include "Window.cms"
$path = INPUTBOX("Введите путь", "", 10)
IF($path = 0)
    LOGWRITE("Отмена")
    HALT
END_IF
$path = STRCONCAT($path, "\")
LOGWRITE("задан путь: ", $path)
GETFILELIST($items, STRCONCAT($path, "*.cms"))
IF(ARRSIZE($items) = 0)
    LOGWRITE("В директории нет подходящих файлов")
    HALT
END_IF
FOR($i=0, $i < ARRSIZE($items))
    LOGWRITE($items[$i])
END_CYC
Window_select(101, "Запустить скрипт:", 10) // ещё вариант вместо 101, указать 102
IF($return = -1)
    LOGWRITE ("Кнопка не нажата, время вышло или окно закрыто принудительно")
ELSE
    LOGWRITE("Запускаем ", $items[$return-1])
    EXECUTE(STRCONCAT($path, $items[$return-1]))
END_IF
HALT
			 
			
			- 
				
А что это вообще такое?
getfilelist($arr, "*"$list_1"*.cms")что за набор символов.
это строка поиска, найти список файлов содержащие $list_1, да все, тему можно считать закрытой, код доработали, все работает, всем спасибо.
			 
			
			- 
				
это строка поиска, найти список файлов содержащие $list_1, да все, тему можно считать закрытой, код доработали, все работает, всем спасибо.
Что хотели получить я понял, вопрос был о синтаксисе. Написано неправильно и если даже оно на какой-то версии могло проскочить, так писать не нужно, чтоб потом не искать причины неправильной работы.
Тогда так должно быть
getfilelist($arr, STRCONCAT("*", $list_1, "*.cms"))
			 
			
			- 
				
... так писать не нужно, чтоб потом не искать причины неправильной работы.
Тогда так должно быть
getfilelist($arr, STRCONCAT("*", $list_1, "*.cms"))
понял, попробую, возможно из-за этого и не работал на 4.13
			 
			
			- 
				Искал информацию по функции GETFILELIST(), насколько понял, написал такой код 
// выведем отладочные сообщения
$line = STRCONCAT("Получим список файлов в папке D:\MyFolder\*.csv") 
TFWRITE("log.txt",$line)
GETFILELIST($files, "D:\MyFolder") // Получаем список файлов в массив
$line = STRCONCAT("В папке D:\MyFolder найдено файлов: ",ARRSIZE($files)) 
TFWRITE("log.txt",$line)
работает. 
В справке сказано
    История развития программы
    v4.13.014 (16.05.18)
    + Ядро
      + Переход на Юникод, теперь в файлах применяется кодировка UTF-8
      + Создана 64-битная версия программы
    ....
        + Доработка KEYSTRING(), теперь он сам жмет Shift
        + Исправление GETFILELIST()
        + Исправление GETDIRLIST()
в самой справке описания функции нет.  Подскажите как ею пользоваться -что можно, а что нельзя.
И еще бы по GETDIRLIST().
Спасибо
			 
			
			- 
				Последняя стабильная версия 4.13, справка:
(https://i.imgur.com/RAgUg65.png)
Бета 4.14, справка:
(https://i.imgur.com/SbgtwGk.png)
			 
			
			- 
				Да, ступил, извиняюсь  :-\
Я искал поиском в справке  и не нашел почему то. А сейчас поиск сразу дал результат. 
Больше ничего в оправдание сказать не могу  :-X