|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты |
|
[Архив - Часть 1.2] AutoIt скрипты
|
Ветеран Сообщения: 565 |
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
|
------- Отправлено: 10:47, 10-02-2006 |
Старожил Сообщения: 205
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
|
|
Отправлено: 13:10, 04-11-2006 | #441 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
Цитата:
#include <File.au3> $File = "c:\test.txt" $Array = _TextInFile ($File, "Просто текст") If $Array[0][0]>1 Then For $i = $Array[0][0] to 2 Step -1 _FileWriteToLine($File, $Array[$i][0], "", 1) Next EndIf Func _TextInFile ($file, $text) Local $i, $txtLines, $res [1][2] = [[0,0]] _FileReadToArray ($file, $txtLines) If IsArray ($txtLines) Then For $i=1 To $txtLines [0] If StringInStr ($txtLines [$i], $text) Then ReDim $res [$res [0][0]+2][2] $res [0][0] = $res [0][0] +1 $res [$res [0][0]][0] = $i $res [$res [0][0]][1] = $txtLines [$i] EndIf Next EndIf Return $res EndFunc |
|||
Отправлено: 09:42, 05-11-2006 | #442 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Приогромное спасибо! Я думал что функция для моей задумки, будет выглядеть намного длинее ![]() В связи с тем, что эта функция относительно быстро срабатывает (я проверял на большом файле с текстом), у меня появился вопрос... У меня есть функция (от Sanja Alone), которая делает поиск по файлу, и если текст найден, то возвращается в Array[0] номер строки где был найден текст, а в Array[1] возвращается состав этой строки. Так вот, та функция, визуально большая, и большие файлы обрабатывает довольно долго (доходит до 5-ти секунд). И ещё, возвращается только первое-найденное вхождение, а хотелось бы точно также как и с твоей функцией, чтобы в массив возвращались все номера строк, и все содержания этих строк. В общем, вопрос в том, можно ли немного переделать эту функцию, чтобы вместо поиска дубляжей, искалось просто слово, и возвращались те же значения, что и в этой функции? (чтобы также можно было воспользоваться ими, ну, допустим для замены текста на что то другое - для этого у меня уже есть функция). |
------- Отправлено: 23:47, 05-11-2006 | #443 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
![]() в чем разница-то?.. возвращаются всегда все значения, просто при замене использовались не все (смотри пределы): |
||
Отправлено: 04:20, 06-11-2006 | #444 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Ещё раз спасибо. В данном случае, нет необходимости в поиске текста содержащий кириллицу (разве что бывают ссылки с кириллицей ![]() |
------- Отправлено: 09:55, 06-11-2006 | #445 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать 1. Creat0R спасибо за скрипт, но он всеравно не подходит. В твоём скрипте постоянно, бесконечно стартует Setup.exe
При установке программы (например-Setup.exe) может вывалиться окно с ошибкой ERROR (ошибка вылетает в том случае если неустановлены видео драйвера), а может и не вывалиться (если же установлены видео драйвера). Так вот, хотелось бы чтобы скрипт работал как с установленными дровами так и без них. Т.е. при старте Setup.exe может установка прекратиться и вылезет окно ERROR-так можно этот файл стартовать до 3х раз-потом уже ошибка не вылетает и прога начинает устанавливаться, а может ошибка и не вылезти. ======================================================= 2. ПОМОГИТЕ НАЙТИ ОШИБКУ !!! Мне нужно убрать галочки при инсталяции (именно мышкой <ControlClick>)-написал такой скрипт, но он не убират галочки:
|
Отправлено: 16:32, 06-11-2006 | #446 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL
Цитата:
Цитата:
![]() If WinExists("ERROR", "") Then ;Если окно с заголовком ERROR существует, то.... WinClose("ERROR", "") ;Закрываем это окно ContinueLoop ;продолжаем (начинаем) скрипт сначала (запустив Setup.exe опять) EndIf ;Конец условия (“Если окно с заголовком ERROR существует, то....”) ExitLoop ;Выход из цикла (без запуска Setup.exe) Цитата:
![]() Убери (или измени) один, и будет ставить галку (если все параметры верные). |
|||
------- Отправлено: 16:53, 06-11-2006 | #447 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Есть ещё небольшой вопрос, также немного затрагивающий функцию поиска дубликатов... Возможно ли сделать поиск по файлу на дубликаты, но заранее не знаяя вхождения? т.е нужно проверить все существующие строки в файле, и если хоть какая то из них имеет дубликат (именно по строке), то удалить все точно такие же строки, но оставив оригинал (для каждой такой найденной строки, произвести данную операцию - т.е удаление дубликатов найденных строк). Но, подвог (для меня) в том, что нужно удалить не именно те строки (их дубликаты), а те которые располагаются на три строчки выше. Вот пример файла: Первая строка Ещё строка - > вот это и нужно чтобы удалилось (так как на три строки ниже, есть дубль той строки, которая на одну ниже этой (но её положение не фажно)) и ещё строка просто текст и ещё строка и ещё больше текста строка номер 7 - > и вот это нужно чтобы удалилось строка 8 и текст строки номер 9 И ещё больше текста P.S. В данном случае, скорость обработки, не очень уж важно, да и визуализация тоже ![]() |
------- Отправлено: 20:17, 06-11-2006 | #448 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
#include <File.au3> $File = "c:\test.txt" Dim $FileLines _FileReadToArray ($file, $FileLines) ; Возвращаем массив из дублирующихся записей $DupLines = _DupsInArray ($FileLines) ; Страховка от пустого массива если дублей нет If $DupLines [0][0] >0 Then ; Рабочий массив для отметок удаляемых записей Local $DelFlags [$FileLines [0] +1] For $i=1 To $DupLines [0][0] ; расчитываем номер строки для удаления $delNum = $DupLines [$i][0] - 3 ; отмечаем кандидата на удаление в массиве $DelFlags [$delNum] = 1 Next ; Собственно цикл удаления For $i = $FileLines [0] To 1 Step -1 If $DelFlags [$i] = 1 Then _FileWriteToLine ($File, $i, "", 1) EndIf Next EndIf ; Возвращает двумерный массив со счетчиком, содержащий только дубли Func _DupsInArray (ByRef $array) Local $i, $i, $res [1][2] = [[0,0]] ; рабочий массив для отметки обработанных дублей Local $flags [$array [0] +1] For $i=1 To $array [0] For $j=$i+1 To $array [0] If $flags [$j] <> 1 Then If $array [$i] = $array [$j] Then ReDim $res [$res [0][0]+2][2] $res [0][0] = $res [0][0] +1 $res [$res [0][0]][0] = $j $res [$res [0][0]][1] = $array [$j] $flags [$j] = 1 EndIf EndIf Next Next Return $res EndFunc |
|
Отправлено: 11:21, 07-11-2006 | #449 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Я извеняюсь, я не обращал внимания, но в том файле, для которго это будет делаться, есть дубли которые не должны быть тронуты. Т.е я даже заранее знаю начало строки - URL= но перед этим идёт таб (@Tab)... в общем, вот часть этого файла (это закладки от браузера Opera): #URL ID=16 NAME=ICQ2Go! URL=http://www.icq.com/icq2go/flicq.html ICONFILE=www.icq.com.ico IN PANEL=YES PANEL_POS=10 #URL ID=17 NAME=Сетевые инструменты URL=file://C:/Program Files/Opera/help/tools/tools.htm ICONFILE=tools.ico IN PANEL=YES PANEL_POS=13 #URL ID=18 NAME=Просмотр Кеша URL=file://C:/Program Files/Opera/help/Opera_Cache_Viewer76/viewer.htm ICONFILE=cash.ico IN PANEL=YES PANEL_POS=14 #URL ID=19 NAME=ICQ2Go! URL=http://www.icq.com/icq2go/flicq.html ICONFILE=www.icq.com.ico IN PANEL=YES PANEL_POS=10 #URL ID=20 NAME=Просмотр Кеша URL=file://C:/Program Files/Opera/help/Opera_Cache_Viewer76/viewer.htm ICONFILE=cash.ico IN PANEL=YES PANEL_POS=14 |
------- Отправлено: 12:01, 07-11-2006 | #450 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|