Недавние сообщения

Страницы: [1] 2 3 ... 10
1
Код: AutoIt [Выделить]
...
While 1
    $dn = GUICtrlRead($nInput1)
    $dk = GUICtrlRead($nInput2)

    If $dn <> $iInput1 Or $dk <> $iInput2 Then
        CabTCM()
        CabTCM_1()
        CabRM()
        CabRM_1()
        $iInput1 = $dn
        $iInput2 = $dk
    EndIf

    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nCheckbox1
            If BitAND(GUICtrlRead($nCheckbox1), $GUI_CHECKED) Then
                ConsoleWrite('Нажато' & @CRLF)
                $nInput3 =  GUICtrlCreateInput('', 10, 40, 50, 20)
                $nUD3    =  GUICtrlCreateUpdown(-1, $UDS_ALIGNLEFT) ; слева
                            GUICtrlSetLimit(-1, 99, 1)
                $nInput4 =  GUICtrlCreateInput('', 75, 40, 50, 20)
                $nUD4    =  GUICtrlCreateUpdown(-1, $UDS_ALIGNRIGHT) ; справа
                            GUICtrlSetLimit(-1, 99, 1)
                $nCheckbox2 = GUICtrlCreateCheckbox('', 130, 40, 20, 20)
            Else
                ConsoleWrite('Не нажато' & @CRLF)
                GUICtrlDelete($nInput3)
                GUICtrlDelete($nInput4)
                GUICtrlDelete($nCheckbox2)
                GUICtrlDelete($nUD3)
                GUICtrlDelete($nUD4)
            EndIf
    EndSwitch
WEnd
...

2
Инструменты и справка по AutoIt / Re: SciTE 3.5.5.101 для AutoIt
« Последний ответ от barbituraat Отправлен Сегодня в 17:52:56 »
Может кому то поможет. Если упорно при компиляции ссылается на неправильный путь к компилятору AutoIT в SCITE то в папке [Ваш путь]\SkiTE\languages\ в файле au3.properties
надо указать правильный путь


# *** Specify here your AutoIt program directory  ***
autoit3dir=[Ваш путь]\AutoIt3
3
Стол заказов / Распознавание числа на экране
« Последний ответ от mv6677 Отправлен Сегодня в 17:30:06 »
Версия AutoIt: 3.3.14.0

Описание:
Здравствуйте.
Помогите с решением.

В заданной области экрана (в центре) - находится картинка (файл jpg, открытый просмотрщиком).
На рисунке изображено число.
Область, которую занимает окошко с изображением числа - примерно 200х200.

Как скриптом - распознать - какое число изображено на картинке ?
И вообще возможно ли распознать число скриптом AutoIt ?

Примечания:
4
Не корректно работает создание и удаление элемента GUI при нажатии на $nCheckbox1
Код: AutoIt [Выделить]
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <UpdownConstants.au3>

Global $iInput1
Global $iInput2

$hGUI = GUICreate('Кабельные вводы', 980, 250, -1, -1, -1, $WS_CLIPCHILDREN)
$nInput1 =  GUICtrlCreateInput('23', 10, 10, 50, 20)
            GUICtrlCreateUpdown(-1, $UDS_ALIGNLEFT) ; слева
            GUICtrlSetLimit(-1, 99, 1)
$nInput2 =  GUICtrlCreateInput('33', 75, 10, 50, 20)
            GUICtrlCreateUpdown(-1, $UDS_ALIGNRIGHT) ; справа
            GUICtrlSetLimit(-1, 99, 1)
$nCheckbox1 = GUICtrlCreateCheckbox('', 130, 10, 20, 20)
$nOutput1 = GUICtrlCreateEdit('', 160, 10, 400, 100)
$nOutput2 = GUICtrlCreateEdit('', 570, 10, 400, 100)
$nOutput3 = GUICtrlCreateEdit('', 160, 130, 400, 100)
$nOutput4 = GUICtrlCreateEdit('', 570, 130, 400, 100)


GUISetState()

Dim $TCM =  [["ТСМ 20/0+5-12", 5, 12], _
            ["ТСМ 30/0+13-23", 13, 23], _
            ["ТСМ 40/0+23-33", 23, 33], _
            ["ТСМ 60/0+34-51", 34, 51], _
            ["ТСМ 90/0+52-78", 52, 78], _
            ["ТСМ 120/0+79-99", 79, 99]]

Dim $RM =   [["RM 20 (∅4-14,5)", 4, 14.5], _
            ["RM 30 (∅10-25)", 10, 25], _
            ["RM 40 (∅21,5-34,5)", 21.5, 34.5], _
            ["RM 60 (∅28-54)", 28, 54], _
            ["RM 90 (∅48-71)", 48, 71], _
            ["RM 120 (∅67,5-99)", 67.5, 99]]

Dim $RMe =  [["RM 20w40 (∅3,5-16,5)", 3.5, 16.5], _
            ["RM 40 10-32 (∅9,5-32,5)", 9.5, 32.5], _
            ["RM 60 24-54 (∅24-54)", 24, 54]]

While 1
    $dn = GUICtrlRead($nInput1)
    $dk = GUICtrlRead($nInput2)

    Select
        Case $dn <> $iInput1
            CabTCM()
            CabTCM_1()
            CabRM()
            CabRM_1()
            $iInput1 = $dn

        Case $dk <> $iInput2
            CabTCM()
            CabTCM_1()
            CabRM()
            CabRM_1()
            $iInput2 = $dk

        Case $nCheckbox1
                If BitAND(GUICtrlRead($nCheckbox1),$GUI_CHECKED) Then
                    ConsoleWrite('Нажато' & @CRLF)
                    $nInput3 =  GUICtrlCreateInput('', 10, 40, 50, 20)
                                GUICtrlCreateUpdown(-1, $UDS_ALIGNLEFT) ; слева
                                GUICtrlSetLimit(-1, 99, 1)
                    $nInput4 =  GUICtrlCreateInput('', 75, 40, 50, 20)
                                GUICtrlCreateUpdown(-1, $UDS_ALIGNRIGHT) ; справа
                                GUICtrlSetLimit(-1, 99, 1)
                    $nCheckbox2 = GUICtrlCreateCheckbox('', 130, 40, 20, 20)
                Else
                    ConsoleWrite('Не нажато' & @CRLF)
                    ;GUICtrlDelete ( $nInput3 )
                EndIf

    EndSelect

    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd



Func CabTCM()
  If Int($dn) > Int($dk) Or $dn < $TCM[0][1] Or $dk > $TCM[UBound($TCM) - 1][2] Then Return GUICtrlSetData($nOutput1, "Некорректный диапазон")
  GUICtrlSetData($nOutput1, '∅' & $dn & '–' & $dk & ':' & @TAB)
  For $i = 0 To UBound($TCM) - 1
    If $dn <= $TCM[$i][2] Then
      ;$n = $i
      For $i = $i To UBound($TCM) - 1
        If $dk > $TCM[$i][2] Then
          ConsoleWrite($TCM[$i][0] & ', ')
          GUICtrlSetData($nOutput1, $TCM[$i][0] & ', ', 1)
        Else
          ;$k = $i
          ConsoleWrite($TCM[$i][0] & @CRLF)
          GUICtrlSetData($nOutput1, $TCM[$i][0], 1)
          ExitLoop 2
        EndIf
      Next
    EndIf
  Next
EndFunc

Func CabRM()
  If Number($dn) > Number($dk) Or $dn < $RMe[0][1] Or $dk > $RM[UBound($RM) - 1][2] Then Return GUICtrlSetData($nOutput2, "Некорректный диапазон")
  GUICtrlSetData($nOutput2, '∅' & $dn & '–' & $dk & ':' & @TAB)
  For $i = 0 To UBound($RM) - 1
    If $dn >= $RM[$i][1] And $dk <= $RM[$i][2] Then Return GUICtrlSetData($nOutput2, $RM[$i][0], 1)
  Next
  For $i = 0 To UBound($RMe) - 1
    If $dn >= $RMe[$i][1] And $dk <= $RMe[$i][2] Then Return GUICtrlSetData($nOutput2, $RMe[$i][0], 1)
  Next
  ;GUICtrlSetData($nOutput2, "Не найдено")
  Local $j = -1, $RMt = $RM
  For $i = 0 To UBound($RM) - 1
    If $dn >= $RMt[$i][1] And $dn <= $RMt[$i][2] Then $j = $i
  Next
  If $j = -1 Then
    $RMt[0][0] = $RMe[0][0]
    $RMt[0][1] = $RMe[0][1]
    $RMt[0][2] = $RMe[0][2]
    $j = 0
  EndIf
  For $i = $j To UBound($RMt) - 1
    GUICtrlSetData($nOutput2, $RMt[$i][0] & ", ", 1)
    If $dk >= $RMt[$i][1] And $dk <= $RMt[$i][2] Then Return
  Next
EndFunc


Func CabTCM_1()
  If Number($dn) > Number($dk) Or $dn < $TCM[0][1] Or $dk > $TCM[UBound($TCM) - 1][2] Then Return GUICtrlSetData($nOutput3, "Некорректный диапазон")
  GUICtrlSetData($nOutput3, '∅' & $dn & '–' & $dk & ':' & @TAB)
  For $i = 0 To UBound($TCM) - 1
    If $dk <= $TCM[$i][2] Then
      For $i = $i To 0 Step -1
          If $dn >= $TCM[$i][1] Then
            GUICtrlSetData($nOutput3, $TCM[$i][0], 1)
            ExitLoop 2
          Else
            GUICtrlSetData($nOutput3, $TCM[$i][0] & ', ', 1)
          EndIf
      Next
      Else
    EndIf
  Next
EndFunc

Func CabRM_1()
  If Number($dn) > Number($dk) Or $dn < $RMe[0][1] Or $dk > $RM[UBound($RM) - 1][2] Then Return GUICtrlSetData($nOutput4, "Некорректный диапазон")
  GUICtrlSetData($nOutput4, '∅' & $dn & '–' & $dk & ':' & @TAB)
  For $i = 0 To UBound($RM) - 1
    If $dn >= $RM[$i][1] And $dk <= $RM[$i][2] Then Return GUICtrlSetData($nOutput4, $RM[$i][0], 1)
  Next
  For $i = 0 To UBound($RMe) - 1
    If $dn >= $RMe[$i][1] And $dk <= $RMe[$i][2] Then Return GUICtrlSetData($nOutput4, $RMe[$i][0], 1)
  Next
  For $i = 0 To UBound($RM) - 1
    If $dk <= $RM[$i][2] Then
      For $i = $i To 0 Step -1
          If $dn >= $RM[$i][1] Then
            GUICtrlSetData($nOutput4, $RM[$i][0], 1)
            ExitLoop 2
          Else
            GUICtrlSetData($nOutput4, $RM[$i][0] & ', ', 1)
          EndIf
      Next
      Else
    EndIf
  Next
EndFunc
 

5
InnI  [?]
Цитировать
Не понял, почему "приплыли"?
Потому, что лично для меня эта строка не несёт никакой информации. Следовательно она паразитная в отличие от других строк.
Это очередное если. Лично я не исключаю, что такое если может возникнуть в работе с лог файлом вопрошающего.
6
mitiya
Цитировать
мне кажется реально достаточно $
Если вас не будут смущать оставшиеся пустые строки, то достаточно.

Цитировать
там где перевод строки, строка ,вроде как в любом случае, заканчивается
Строка заканчивается, а перевод строки остаётся ;)
7
Garrett
Цитировать
А если встретится такая строка asdsad pq|owe. И всё приплыли.
Не понял, почему "приплыли"? Эта строка не будет удалена. Вроде как это и требуется :think:

Именно так и есть. И мне кажется реально достаточно $ ? lf;t ,tp ($|\R) . Ведь там где перевод строки, строка ,вроде как в любом случае, заканчивается ?
Или может быть что-то другое?
8
Garrett
Цитировать
А если встретится такая строка asdsad pq|owe. И всё приплыли.
Не понял, почему "приплыли"? Эта строка не будет удалена. Вроде как это и требуется :think:
9
Общие вопросы по AutoIt / Re: Значение массива по условию
« Последний ответ от InnI Отправлен Сегодня в 16:31:17 »
joparezzz
Отредактировал ответ #16 - исправил проблему перезаписи глобального массива.
10
Общие вопросы по AutoIt / Re: Значение массива по условию
« Последний ответ от Garrett Отправлен Сегодня в 16:12:06 »
joparezzz  [?]
Цитировать
как нибудь можно сделать сортировку по увеличению в Edit?

ПредупреждениеЗа нарушение общих правил (пункт В.4):
Цитировать
Не лепите несколько вопросов разной тематики в один пост. По типу "Ребят, а ещё такой вопрос...". Каждый вопрос в свою тему.


С уважением, ваш Глобальный модератор.
Цитировать
Спасибо, все работает отлично.

На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
Тема не решена
Страницы: [1] 2 3 ... 10