Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 12:29 10-01-2020
    yozhic



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

    Цитата:
    После выполнения __BrowseDialog происходит возвращение в точку вызова

    Спасибо, прояснилось.

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 14:25 16-09-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста: ищу в файле строку со словом End

    Код:
    $sSearched = "End"
    $sText = FileRead("text.log")
    $aLines = StringSplit($sText, @CRLF, 1)
    For $i = 1 To $aLines[0] Step +1
        If StringInStr($aLines[$i], $sSearched) Then $aEndLine = $i-1
    Next

    как можно получить всплывающее окно со строками с 5 по $aEndLine включительно с разделителем @CRLF?
     

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 12:40 18-09-2013 | Исправлено: Skif_off, 12:40 18-09-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off,
    Попробуйте так.
    Код:
    Local $sSearched = 'End', $iEndLine = 0, $iStart
    $sText = FileRead(@ScriptDir & '\text.log')
    $aLines = StringSplit($sText, @CRLF, 1)
    $sText = ''
    For $i = 1 To $aLines[0]
        If StringInStr($aLines[$i], $sSearched) Then
            $iEndLine = $i - 1
            ExitLoop
        EndIf
    Next
    If $iEndLine Then
        $iStart = $iEndLine - 5
        If $iStart < 1 Then $iStart = 1
        For $i = $iStart To $iEndLine
            $sText &= $aLines[$i] & @CRLF
        Next
        $sText = StringTrimRight($sText, 2)
        MsgBox(64, 'Info', $sText)
    Else
        MsgBox(16, 'Error', 'No string wiht ' & $sSearched)
    EndIf

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 04:48 19-09-2013 | Исправлено: madmasles, 04:50 19-09-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо за помощь, как-то странно работает и не совсем понимаю логику - из 4х файлов в 1 все нормально, в трех выводятся строки 2-5 включительно. Сообразил, не совсем точно сформулировал: 5я строка не от $iEndLine, а просто 5я строка файла. Вот эта строка
    $sText &= $aLines[$i] & @CRLF
    кажется, самое оно, попробую добавить поиск первой строки для точности.
    А для чего нужна строка $sText = StringTrimRight($sText, 2)? Пробовал закомментировать - ничего не меняется. И по строке $sText = '', поясните, пожалуйста.

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 12:40 19-09-2013 | Исправлено: Skif_off, 13:11 19-09-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off

    Цитата:
    А для чего нужна строка $sText = StringTrimRight($sText, 2)?
    Чтобы убрать последний, ИМХО, ненужный, @CRLF.

    Цитата:
    И по строке $sText = ''
    Обнуляем весь, прочитанный из файла, текст и потом используем эту переменную для своих нужд.
     
    Так будет возвращать текст начиная с пятой строки. Если $sSearched встретится раньше или в пятой строке, то вернет текст начиная с первой строки.

    Код:
    Local $sSearched = 'End', $iStart = 5, $fFive, $sTmp
    $sText = FileRead(@ScriptDir & '\text.log')
    $aLines = StringSplit($sText, @CRLF, 1)
    $sText = ''
    If $aLines[0] <= $iStart Then $iStart = 1
    For $i = 1 To $aLines[0]
        If StringInStr($aLines[$i], $sSearched) Then ExitLoop
        If $fFive Then
            If $sTmp Then $sTmp = ''
            $sText &= $aLines[$i] & @CRLF
        Else
            $sTmp &= $aLines[$i] & @CRLF
            If $i = $iStart - 1 Then $fFive = True
        EndIf
    Next
    If Not $sText Then $sText = $sTmp
    $sText = StringTrimRight($sText, 2)
    MsgBox(64, 'Info', $sText)

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:56 19-09-2013 | Исправлено: madmasles, 17:27 19-09-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Я обычно делаю поиск слов функцией StringInStr, от полученной позиции ищу вправо и влево перенос строки (параметр -1), от полученных позиций с помощью StringMid получаю нужный кусок.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 17:39 19-09-2013 | Исправлено: AZJIO, 17:40 19-09-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Цитата:
    делаю поиск слов функцией StringInStr...
    Логично.

    Код:
    Local $sSearched = 'End', $iStartString = 5, $sText, $iStart, $iCount, $iSearched
     
    $sText = FileRead(@ScriptDir & '\text.log')
    $iSearched = StringInStr($sText, $sSearched, 1)
    If Not $iSearched Then Exit 13
    $iStart = StringInStr($sText, @CRLF, 0, $iStartString - 1) + 2
    If $iStart > $iSearched Then $iStart = 1
    $iCount = StringInStr($sText, @CRLF, 0, -1, $iSearched) - $iStart
    ;~ ConsoleWrite('>' & StringMid($sText, $iStart, $iCount) & '<' & @LF)
    MsgBox(64, 'Info', '>' & StringMid($sText, $iStart, $iCount) & '<')
    ;~ MsgBox(64, 'Info', '>' & StringMid($sText, StringInStr($sText, @CRLF, 0, $iStartString - 1) + 2, StringInStr($sText, @CRLF, 0, -1, _
    ;~         StringInStr($sText, $sSearched, 1)) - StringInStr($sText, @CRLF, 0, 4) - 2) & '<')

     

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 18:59 19-09-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо, но первый как-то понятнее и удобнее, добавил только поиск первой нужной строки - вроде правильно вытаскивает.
     
    AZJIO
    Спасибо, постараюсь запомнить, но в данном случае так не получится: первые четыре и последние две строки в файлах совпадают (ну, кроме даты), а нужный текст между ними может занимать от 1 до 6 строк.

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 19:03 19-09-2013 | Исправлено: Skif_off, 19:03 19-09-2013
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    первые четыре и последние две строки в файлах совпадают (ну, кроме даты), а нужный текст между ними может занимать от 1 до 6 строк.
    Было бы лучше, если бы Вы дали пример файла и показали, что из него надо получить.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:37 19-09-2013 | Исправлено: madmasles, 19:41 19-09-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Мне просто лень, я уже несколько раз делал подобные интерпретации.
    http://www.autoitscript.com/forum/topic/143295-filereadline-can-you-read-second-last-line/page__st__20#entry1009463
    http://www.autoitscript.com/forum/topic/145840-fast-delete-multiple-lines-from-text-file/#entry1031341
    Я позиционировал идею по скорости выполнения, хотя StringSplit настолько быстра, что иногда выйгрыша почти нет. В данном случае вызов StringInStr в цикле может замедлить выполнение. Для новичка в узкой проблеме: небольшом файле и никуда не торопящимся проблемы нет, граница при которой наступает заметность недостигнута.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 19:52 19-09-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    AZJIO
    Не хочется использовать код, который не до конца понимаю , первый вариант, предложенный madmasles прост и понятен - нашел крайние строки и показал все между ними, в общей сложности до полутора десятков строк, но про скорость буду иметь в виду, спасибо.

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 08:00 20-09-2013
    DoctorLans

    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите, можно ли в AutoIT вывести на экран поверх всех окон небольшой кружок? (нарисовать программно или ещё лучше взять из файла)
     
    Это нужно для индикации одного действия.

    Всего записей: 248 | Зарегистр. 07-10-2006 | Отправлено: 22:36 23-09-2013 | Исправлено: DoctorLans, 22:44 23-09-2013
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    DoctorLans

    Цитата:
    Это нужно для индикации одного действия.

    Вирус точишь? Посмотри примеры, которые идут с Autoit. Хотя проще намалевать и вывести.

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 22:59 23-09-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Password generator - обновил, добавил иконки.
     
    DoctorLans
    Можно создать прозрачное окно и в нём кружок как картинку. Или посмотри пример _WinAPI_CreateFont, вместо текста введи символ кружка, в Юникоде их полно разных размеров, хотя размером шрифта можно регулировать.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 04:16 24-09-2013 | Исправлено: AZJIO, 04:30 24-09-2013
    Orion_76



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Чего-то медленно Autoit с файлами и строками работает..
    Как-то была задача обработать 2 текстовых файла(почти CSV) по 2 МБ.
    Надо было перебрать строки в первом файле, найти соответствующие им во втором, и заменить подстроку.
    Написал скрипт, запустил..
    После 20-30 минут выполнения остановил скрипт...  
    Переписал все на PHP CLI..
    10-20 секунд выполнения - готово-)

    Всего записей: 386 | Зарегистр. 02-11-2007 | Отправлено: 05:59 24-09-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Orion_76
    Попробуйте на Compare strings проверить скорость обработки.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 06:56 24-09-2013
    Orion_76



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Попробуйте на Compare strings проверить скорость обработки.

    Поздно-))
    теперь у меня bash, php и совсем другие задачи.-))
    Может кому еще пригодиться-)

    Всего записей: 386 | Зарегистр. 02-11-2007 | Отправлено: 20:28 24-09-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Orion_76
    Смысл тогда писать? Это просто доказывает что вы в AutoIt3 хуже разбираетесь чем в PHP. Кстати PHP тоже интерпретируемый язык, так что быстрее он не должен работать в теории. Это в Си возможно будет ускорение слышал о коэфициенте в 10 раз.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 22:39 24-09-2013
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, подскажите, пожалуйста, как правильно организовать поддержку скриптов без установки AutoIT /редактора/доп. инструментов? На х64 системе, если не интересует возможность редактирования из меню ПКМ: добавить в реестр, AutoIt3.exe положить в \SysWOW64, AutoIt3_x64.exe под именем AutoIt3.exe в \System32?

    Всего записей: 6489 | Зарегистр. 28-01-2008 | Отправлено: 02:02 25-09-2013 | Исправлено: Skif_off, 02:02 25-09-2013
    Orion_76



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO

    Цитата:
    Кстати PHP тоже интерпретируемый язык, так что быстрее он не должен работать в теории.

    Замнем для ясности?-))
    Основная специализация PHP: работа со строками... Разница понятна?-)
     
     
    Добавлено:
    AZJIO

    Цитата:
    Смысл тогда писать?

    Я обратил внимание на проблему, Вы предложили, возможно, один из оптимальных способов ее решения.
    В целом, оба наших поста полезны для накопления базы полезных знаний ветки Autoit.

    Всего записей: 386 | Зарегистр. 02-11-2007 | Отправлено: 07:31 25-09-2013
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru