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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    AZJIO



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

    Цитата:
    В итоге пока первый скрипт является идеалом.
    Ок. Ещё можно бы было вычислить приращение, то есть при каждом изменении Y на шаг цикла, X меняется на некую величину, то есть приращение. Так как эта прямая, то приращение является константой. Отсюда можно было бы исключить формулу и использовать приращение для X, ну типа $X += $Increment но проблема, что $Increment по точности может превышать длину числа с плавающей точкой, то есть округлится до определённой точности по размеру типа данных float. В итоге такой вариант не работает.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 11:43 17-04-2013
    embrace909



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

    Цитата:
    А в чем вообще заключается твоя задача, т.е. зачем это надо?

    Подгон стоимости 2x видов продукции определенного количества к определенной сумме с копейками.

    Всего записей: 4483 | Зарегистр. 03-03-2006 | Отправлено: 11:46 17-04-2013 | Исправлено: embrace909, 11:53 17-04-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А-а, народ псевдоскидками заманиваешь? нехорошо однако.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 12:23 17-04-2013 | Исправлено: Daniyar91, 12:27 17-04-2013
    embrace909



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Daniyar91
    А вот и не угадали. Миссия благая. После снижения цены при проведении аукциона на шаг уакциона получается определенная сумма. Можно ввести третью строку как остаточная стоимость 1 единицы продукции, а можно подогнать всё в 2 строчки, чтобы вписать ровно в последнее предложение цены, которая получилась при снижении на аукционе.

    Всего записей: 4483 | Зарегистр. 03-03-2006 | Отправлено: 12:48 17-04-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Обновил сборку AutoIt3_v3.3.8.1.exe сегодня.
    1. Обновлены UDF из версии 3.3.9.4, проверено, что все обновления UDF совместимы с 3.3.8.1, и только улучшены сами функции.
    2. Обновлён SciTE4AutoIt3 до последней версии. Новая версия Tidy теперь не добавляет пустую строку в конец файла. FuncPopUp нормально работает. В SciTEConfig несколько скриптов добавлены.
    3. Обновлён RegExp (был старый по ошибке), коллекция скриптов, справка, в Notepad++ отключен плаг NppPlugin_ChangeMarker, который по ошибке был включен (имя файла в не рабочем состоянии).

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 19:49 17-04-2013
    77599073587



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    подскажите как из текстового документа выделить текст и вставить этот текст в другой текстовый документ
     
    Добавлено:
    разобрался. Помогли команды ControlGetText и СontrolCommand

    Всего записей: 31 | Зарегистр. 12-02-2013 | Отправлено: 07:35 18-04-2013
    Scampy



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

    Всего записей: 162 | Зарегистр. 10-10-2008 | Отправлено: 10:48 18-04-2013 | Исправлено: Scampy, 14:22 18-04-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    embrace909
    Скрипт на основе скрипта от AZJIO,  
     
    Самый точный и в некоторых ситуациях самый быстрый:

    Код:
    #include "Array.au3"
     
    ; Входящие данные
    ;---------------------------------------------------------
    Local $iMin = 100
    Local $iMax = 700
    Local $Sum = 753967.76 ; Сумма
     
    Local $kx = 4507 ;коэффициент K1
    Local $ky = 109 ; коэффициент K2
     
    Local $nPlace = 2 ;кол-во знаков после запятой, для X и Y
    ;---------------------------------------------------------
     
     
    $iMin *= 10 ^ $nPlace
    $iMax *= 10 ^ $nPlace
    $Sum *= 10 ^ $nPlace
     
    Local $aRes[1][3] = [[0]]
     
    Local $iMinX = $iMin
    Local $iMaxX = $iMax
    Local $iMinY = $iMin
    Local $iMaxY = $iMax
     
    ; Вычисление
    $iTimer = TimerInit()
     
    ;пытаемся сократить диапазон поиска
    ;----------------------------------------------------------------------------------------------------------------------------
    If $ky < $kx Then
        $X = ($Sum - $iMax * $ky) / $kx
     
        $X = ($Sum - $iMin * $ky) / $kx
        If $X < $iMax Then $iMaxX = $X
     
        If $iMinX > $iMax Or $iMaxX < $iMin Then Exit MsgBox(0, '', 'Решений нет')
    ;~     ConsoleWrite('X = ' & $X & ', $iMinX =' & $iMinX & ', $iMaxX =' & $iMaxX & @CRLF)
     
        $j = 0
        For $X = $iMinX To $iMaxX
            $Y = ($Sum - $X * $kx) / $ky
    ;~         ConsoleWrite('X = ' & $X & ', Y = ' & $Y & ', $iMinX =' & $iMinX & ', $iMaxX =' & $iMaxX & @CRLF)
            If IsInt($Y) And ($Y >= $iMin And $Y <= $iMax) Then ;проверяем валидность X
                $j += 1
                If $j > $aRes[0][0] Then
                    ReDim $aRes[$j * 2 + 1][3]
                    $aRes[0][0] = $j * 2
                EndIf
                $aRes[$j][0] = $X * 10 ^ -$nPlace
                $aRes[$j][1] = $Y * 10 ^ -$nPlace
            EndIf
        Next
        ReDim $aRes[$j + 1][3]
        $aRes[0][0] = $j
     
    Else
        $Y = ($Sum - $iMax * $kx) / $ky
     
        $Y = ($Sum - $iMin * $kx) / $ky
        If $Y < $iMax Then $iMaxY = $Y
     
        If $iMinY > $iMax Or $iMaxY < $iMin Then Exit MsgBox(0, '', 'Решений нет')
    ;~     ConsoleWrite('Y = ' & $Y & ', $iMinY =' & $iMinY & ', $iMaxY =' & $iMaxY & @CRLF)
     
        $j = 0
        For $Y = $iMinY To $iMaxY
            $X = ($Sum - $Y * $ky) / $kx
            ;~     ConsoleWrite('X = ' & $X & ', Y = ' & $Y & ', $iMinY =' & $iMinY & ', $iMaxY =' & $iMaxY & @CRLF)
            If IsInt($X) And ($X >= $iMin And $X <= $iMax) Then ;проверяем валидность X
                $j += 1
                If $j > $aRes[0][0] Then
                    ReDim $aRes[$j * 2 + 1][3]
                    $aRes[0][0] = $j * 2
                EndIf
                $aRes[$j][0] = $X * 10 ^ -$nPlace
                $aRes[$j][1] = $Y * 10 ^ -$nPlace
            EndIf
        Next
        ReDim $aRes[$j + 1][3]
        $aRes[0][0] = $j
     
    EndIf
    ;----------------------------------------------------------------------------------------------------------------------------
     
     
    $iTimer = TimerDiff($iTimer)
    If $j = 0 Then Exit MsgBox(0, Round($iTimer, 3), 'Решений нет')
    _ArrayDisplay($aRes, 'Время ' & Round($iTimer, 3), -1, 0, '', '|', '№|X|Y')

    Кстати

    Цитата:
    Ещё можно бы было вычислить приращение, ... ... но проблема, что $Increment по точности может превышать длину числа с плавающей точкой

    Приращения зависят от коэффициентов, нам даже не надо рассчитывать формулу, а просто от вторых правильных значений отнять первые, этим мы получим инкременты X и Y - максимум с двумя знаками после запятой.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 11:16 18-04-2013 | Исправлено: Daniyar91, 11:21 18-04-2013
    embrace909



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Daniyar91
    Спасибо, сдержал обещание.

    Всего записей: 4483 | Зарегистр. 03-03-2006 | Отправлено: 14:43 18-04-2013
    Daniyar91

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

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 15:08 18-04-2013
    embrace909



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Daniyar91
    А как же это: http://forum.ru-board.com/topic.cgi?forum=5&topic=33902&start=1760#10

    Всего записей: 4483 | Зарегистр. 03-03-2006 | Отправлено: 15:53 18-04-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Написал что сделаю, но ничего не обещал.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 17:05 18-04-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    embrace909
    На тогда ещё быстрей в 5 раз (4 мсек против 20 мсек). Я сначала не понял идеи Daniyar91, подумал он использовал диапазон не только для Y но и для X, поэтому сначала взялся за общий диапазон для Y и X, но в ходе изменения решил сделать цикл используя больший инкремент, чтобы не вычислять холостые ходы, ведь в предыдущем примере как я говорил на один 164.87 приходилось диапазон значений от 100.01 до 100.19. Сами по себе Y и X одинаковы, отсюда их коэфициенты определяют наибольший инкремент. Как только я написал условие, стало понятно что Daniyar91, использовал именно этот метод, ведь у него тоже сравнение коэфициентов.
     

    Цитата:
    Приращения зависят от коэффициентов, нам даже не надо рассчитывать формулу
     вычисление инкремента позволило бы в цикле вместо
    Код:
    $X = ($Sum - $Y * $ky) / $kx
    написать
    Код:
    $X += $increment
    только точность этой величины не позволяет этого сделать.
     
    Скорость увеличена за счёт изначальной установки диапазона, чтобы не проверять лишнее в цикле, то есть $iMin и $iMax приобретают меньший диапазон чем указано во входных данных, а причина, что при Х=100, Y будет больше 700, а так как нам большие значения не нужны, то находим такое Х, при котором Y станет не более 700. То есть изначально ставим диапазон начинающийся с валидных значений. То есть и цикл делает меньше шагов и в цикле не требуется проверок выхода за пределы диапазона.
     

    Код:
    #include "Array.au3"
     
    ; Входящие данные
    Local $iMin = 100
    Local $iMax = 700
    Local $Sum = 753967.76 ; Сумма
    Local $kx = 4507 ; коэффициент
    Local $ky = 109 ; коэффициент
     
    ; Local $iMin = 1
    ; Local $iMax = 10
    ; Local $Sum = 26 ; Сумма
    ; Local $kx = 2 ;коэффициент K1
    ; Local $ky = 4 ; коэффициент K2
     
    ; Вычисление

    $timer = TimerInit()
     
    $iMin *= 100
    $iMax *= 100
    $Sum *= 100
     
    Local $aRes[1][3] = [[0]]
    ; Local $aRes[511][3] = [[510]] ; вариант изначально с запасом, реального выйгрыша нет
     
    ; вычисляем приращение

    If $kx > $ky Then ; если приращение по Х больше приращения по Y, то вычисляем по большему приращению.
        $k1 = $kx ; меняем местами коэфициенты
        $k2 = $ky
        $c1
    = 0 ; меняем местами колонки массива
        $c2 = 1
    Else
        $k1 = $ky
        $k2
    = $kx
        $c1
    = 1
        $c2 = 0
    EndIf
     
    Local
    $tmpMin = $iMin
    ; Если Х (при минимальном значении Y) превышает масксимальный предел, то минимум вычисляем исходя из  подстановки максимального значения Х
    If (($Sum - $iMin * $k1) / $k2) > $iMax Then $iMin = Int(($Sum - $iMax * $k2) / $k1)
     
    ; Если Х (при максимальном значении Y) меньше минимального предела, то максимум вычисляем исходя из  подстановки минимального значения Х. Используем стемпированную $iMin, так как оригинальная могла нарушится предыдущим выражением.
    If (($Sum - $iMax * $k1) / $k2) < $tmpMin Then $iMax = Ceiling(($Sum - $tmpMin * $k2) / $k1)
     
    $j = 0
    For $Yx = $iMin To $iMax
        $Xy
    = ($Sum - $Yx * $k1) / $k2
        If IsInt($Xy) Then ; проверяем что X целое число
            $j += 1
            If $j > $aRes[0][0] Then
                ReDim
    $aRes[$j * 2 + 1][3]
                $aRes[0][0] = $j * 2
            EndIf
            $aRes[$j][$c1] = $Xy / 100
            $aRes[$j][$c2] = $Yx / 100
        EndIf
    Next
    ReDim
    $aRes[$j + 1][3]
    $aRes[0][0] = $j
    $timer
    = TimerDiff($timer)
     
    ; проверка что результаты согласно формуле дают нужную сумму
    For $i = 1 To $j
        $aRes
    [$i][2] = $aRes[$i][$c1] * $k2 + $aRes[$i][$c2] * $k1
    Next
     
    _ArrayDisplay($aRes, 'Время ' & Round($timer, 1), -1, 0, '', '|', '№|X|Y|Сумма')

     
     
    Ещё один вариант, требующий проверки. Ещё в 4 раза быстрей вышеуказанного (0.8 мсек против 4.0 мсек). Отличается тем, что в первом цикле определяет количество шагов сделанных от первого валидного значения до второго валидного значения. Потом выпрыгивает из цикла и начинает новый цикл с шагом например 100. теоритически инкремент величина постоянная, значит следующее целое число будет получено ровно через такое же количество шагов. Сейчас неуверенность в вычислении размера массива. Пока сбоя не давал. Можно сделать с запасом на 2 элемента и потом обрезать в случае если формула окажется не верна.  

    Код:
    #include "Array.au3"
     
    ; Входящие данные
    Local $iMin = 100
    Local $iMax = 700
    Local $Sum = 753967.76 ; Сумма
    Local $kx = 4507 ; коэффициент
    Local $ky = 109 ; коэффициент
     
    ; Local $iMin = 1
    ; Local $iMax = 10
    ; Local $Sum = 26 ; Сумма
    ; Local $kx = 2 ;коэффициент K1
    ; Local $ky = 4 ; коэффициент K2
     
    ; Local $iMin = 200
    ; Local $iMax = 210
    ; Local $Sum = 46247.48 ; Сумма
    ; Local $kx = 208 ; коэффициент К1
    ; Local $ky = 17 ; коэффициент К2
     
    ; Вычисление

    $timer = TimerInit()
     
    $iMin *= 100
    $iMax *= 100
    $Sum *= 100
     
    Local $aRes[1][3] = [[0]]
    ; Local $aRes[511][3] = [[510]] ; вариант изначально с запасом, реального выйгрыша нет
     
    ; вычисляем приращение

    If $kx > $ky Then ; если приращение по Х больше приращения по Y, то вычисляем по большему приращению.
        $k1 = $kx ; меняем местами коэфициенты
        $k2 = $ky
        $c1
    = 0 ; меняем местами колонки массива
        $c2 = 1
    Else
        $k1 = $ky
        $k2
    = $kx
        $c1
    = 1
        $c2 = 0
    EndIf
     
    Local
    $tmpMin = $iMin
    ; Если Х (при минимальном значении Y) превышает масксимальный предел, то минимум вычисляем исходя из  подстановки максимального значения Х
    If (($Sum - $iMin * $k1) / $k2) > $iMax Then $iMin = Int(($Sum - $iMax * $k2) / $k1)
     
    ; Если Х (при максимальном значении Y) меньше минимального предела, то максимум вычисляем исходя из  подстановки минимального значения Х. Используем стемпированную $iMin, так как оригинальная могла нарушится предыдущим выражением.
    If (($Sum - $iMax * $k1) / $k2) < $tmpMin Then $iMax = Ceiling(($Sum - $tmpMin * $k2) / $k1)
     
    If $iMin > $iMax Then Exit MsgBox(0, 'Сообщение', 'Нет решений')
     
    $j = 0
    $iStep = 1
     
    For $Yx = $iMin To $iMax ; этот цикл определяет количество шагов, между двумя валидными результатами
        $Xy = ($Sum - $Yx * $k1) / $k2
        If IsInt($Xy) Then ; проверяем что X целое число
            $j += 1
     
            If $j = 1 Then
                $tmp = $Yx
            Else
                $iStep = $Yx - $tmp ; получаем шаг цикла, при которых целые значения
                $j -= 1
                ExitLoop
            EndIf
             
            If
    $j > $aRes[0][0] Then
                ReDim
    $aRes[$j * 2 + 1][3]
                $aRes[0][0] = $j * 2
            EndIf
            $aRes[$j][$c1] = $Xy / 100
            $aRes[$j][$c2] = $Yx / 100
        EndIf
    Next

     
    ; Окончательно определяем размер
    ; $tmp = Ceiling(($iMax - $Yx + 1) / $s)

    $tmp = Int(($iMax - $Yx) / $iStep) + 1
    ReDim $aRes[$j + $tmp + 1][3]
    $aRes[0][0] = $j + $tmp
     
    For $Yx = $Yx To $iMax Step $iStep ; этот цикл продолжает предыдущий, но используя интервал для получения целых чисел
        $Xy = ($Sum - $Yx * $k1) / $k2
        $j
    += 1
        $aRes[$j][$c1] = $Xy / 100
        $aRes[$j][$c2] = $Yx / 100
    Next
    $timer = TimerDiff($timer)
     
    ; проверка что результаты согласно формуле дают нужную сумму
    For $i = 1 To $j
        $aRes
    [$i][2] = $aRes[$i][$c1] * $k2 + $aRes[$i][$c2] * $k1
    Next
     
    _ArrayDisplay($aRes, 'время ' & Round($timer, 1) & ', шаг ' & $iStep, -1, 0, '', '|', '№|X|Y|Сумма')

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 23:57 18-04-2013 | Исправлено: AZJIO, 01:49 19-04-2013
    Daniyar91

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

    Цитата:
    Отличается тем, что в первом цикле определяет количество шагов сделанных от первого валидного значения до второго валидного значения

    Вот про это я и говорил:
    Цитата:
    Приращения зависят от коэффициентов, нам даже не надо рассчитывать формулу, а просто от вторых правильных значений отнять первые, этим мы получим инкременты X и Y - максимум с двумя знаками после запятой

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 05:23 19-04-2013
    77599073587



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    требуется скрипт для смены разрешения экрана, для windows 7. Требуемое разрешение 1024 -768.

    Всего записей: 31 | Зарегистр. 12-02-2013 | Отправлено: 09:09 19-04-2013
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Очередной раз доказывает что правильный алгоритм может оказаться действеннее выбора языка. С нескольких секунд удалось оптимизировать до долей миллисекунд (более чем в 1000 раз).
     
    Daniyar91

    Цитата:
    Вот про это я и говорил:
    теоритически это должно было быть в вашем коде, если вы знали об этом заранее, но не сделали, а я чесно говоря не понял идеи, то есть я как бы не имел мысли на тот момент, что правильные знатчения повторяются с тем же шагом.
     
    77599073587
    http://www.autoitscript.com/forum/topic/22074-how-to-change-the-refresh-rate/page__p__153200#entry153200
    Если что на официальносм сайте работает поиск.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 11:57 19-04-2013 | Исправлено: AZJIO, 12:09 19-04-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Должно, но небыло, т.к. лень, я только учу AutoIT (на самом деле я его не учу, а справку читаю когда надо что-то автоматизировать, но такое бывает очень редко) и что-то делать для меня сложно.
    Я бы вообще не писал скрипт если бы Zloy_Gelud использовал формулу Y = ($СУММА - $X * $K1) / $K2, но он этого не сделал, поэтому я написал свой вариант.

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 12:27 19-04-2013
    embrace909



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Спасибо за скрипт, удачного уикэнд!

    Всего записей: 4483 | Зарегистр. 03-03-2006 | Отправлено: 17:55 19-04-2013
    SuperDimon007



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Помогите пожалуйста сделать парсинг xml файла
    Он содержит <pod> с разным атрибутом title. Вот пример:

    Код:
    <book>
        <pod title="x">...</pod>
        <pod title="xy">...</pod>
        <pod title="z">...</pod>
    </book>

    Проблема в том что атрибут title может быть разным. Мне надо только теги, которые начинаются на букву "x"
    Нужен код примерно такого типа:

    Код:
    #include <_XMLDomWrapper.au3>
    $xmlbin = inetread("http://site.ru/")
    $xml = BinaryToString($xmlbin)
    _XMLLoadXML($xml)
    $tags = _XMLGetValue('//book/pod[@title="x.*"]')

    Всего записей: 51 | Зарегистр. 12-06-2012 | Отправлено: 22:04 19-04-2013
    Daniyar91

    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO, алгоритм можно улучшить. Если найти больший инкремент заранее, то при огромном инкременте 10000 (что в общем то нереально, если только у embrace909 не ларек, а супермаркет или большая сеть ларьков ) скрипт не будет проделывать 10000 итераций чтобы найти инкремент (т.к. он его уже знает).
     
    если коэффициент поделить на сто (шаг = 0.01, в сто раз меньше единицы), то мы получим инкремент:
    ИнкриментX = K1 / 100
    ИнкриментY = K2 / 100
     
    Ну, а про это ты вкурсе: ДельтаДиапазона / >Инкремент = КоличествоРешений, чаще всего +1
     
    P.S. При выводе результатов (не знаю всегда или нет), в твоем последнем скрипте х и у перепутаны местами (когда embrace909 поймет что продает мобильники по цене зубных щеток - уикенд будет не совсем удачным ).

    Всего записей: 425 | Зарегистр. 30-08-2011 | Отправлено: 11:44 20-04-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