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

Страницы: 1 ... 8 9 [10]
91
Общие вопросы по AutoIt / Re: Как узнать цвет, если одна из координат непостоянна?
« Последний ответ от Malderin Отправлен Август 16, 2017, 09:26:11 »
Если координата Х известна, то можно запустить поиск по вертикали любого цвета, отличного от белого например. Скажем если известна координата по вертикальной оси (y) верхнего края области графика (горизонтальной оси), координата по горизонтали (х) известна и постоянна, то можно сделать так:
Код: AutoIt [Выделить]
Local $iX = 700 ;Например, координата по горизонтали столбика отмеченного стрелкой такая
Local $iY = 500 ;Например, координата по вертикали координата оси (не самой оси а на пару  пикселей вниз от нее, примерно то место куда указывает стрелка)
Local $iColor = "FFFFFF" ;Белый цвет


For $i = $iY To  $iY+200 ;Поиск по вертикали от оси вниз на 200 пикселей
    $res = PixelGetColor($iX, $iY)
    If Hex($res, 6) <> $iColor Then
        MsgBox(4096, "ок", Hex($res, 6))
        ConsoleWrite(Hex($res, 6) & @CRLF)
        ConsoleWrite($iY & @CRLF)
        $i = $iY+200
    EndIf
    $iY = $iY + 1
Next


Не уверен что все это будет работать, поскольку даже когда я вожу мышкой по "белому" фону графика, то уже вижу несколько разных цветов, и в искомом столбике разных цветов тоже много (как в фильме "50 оттенков серого зеленого")
Забыл, команду PixelGetColor лучше привязать к конкретному окну.
92
1. Использовать конвертер pdf в txt. Конвертировать все файлы, так как текст распознанный, значит внутри txt будет корректный текст
2. Бежим по списку файлов txt
    Открываем файл и начинаем его читать построчно. Скорее всего номер договора находится сверху, как вариант ищем контекст "Договор №", и берем все что после него - это и будет номер договора
3. Переименовываем соответствующий файл PDF на номер договора.
4. Потом просто удалите все TXT-файлы

Вот такая концепция. В принципе не сложно, найдите только конвертер pdf в txt

(нажмите для показа/скрытия)

Создайте любой файл txt, поместите туда текст, например "Договор № 567" , запустите скрипт, увидите номер договора "567"
93
Дни рождения / С днём рождения invisible, Tea_!
« Последний ответ от Представитель Сообщества Отправлен Август 16, 2017, 01:00:38 »
От имени всего Русского сообщества AutoIt поздравляем Вас invisible, Tea_ с днём рождения!



Цитировать
Пусть все мечты исполнятся,
Пусть все желанья сбудутся,
Пусть радости запомнятся,
А горести забудутся.

Здоровье будет крепкое,
В делах всегда согласие,
Любовь навеки верная —
Без ссор и разногласия.

Зарплата только вовремя,
Стабильная, высокая.
Работа будет лёгкая
И не совсем далёкая.

Пусть жизнь Вам дарит самые
Прекрасные мгновения.
Желаем только радости
И счастья, с днем рождения!
94
Pennon  [?]
Цитировать
не загружал процессор?
Код: AutoIt [Выделить]
While 1

If Not WinExists('[class:IEFrame]') Then
    $oIE = _IECreate($sUrl)
    $hWnd = WinWait('[class:IEFrame]', '', 10)
EndIf
Sleep(30)
WEnd

95
ra4o
Спасибо работает но грузит систему на 100% Что сделать чтобы между действиями не загружал процессор?
96
Общие вопросы по AutoIt / Re: Значение массива по условию
« Последний ответ от joparezzz Отправлен Август 15, 2017, 19:55:28 »
При 23 – 35 выводится:
23 – 35:   RM 30 (∅10-25), RM 40 (∅21,5-34,5), RM 60 (∅28-54),
Хотелось бы чтоб, RM 30 (∅10-25) не выводилось.
Тут, видимо, условию $dn >= $RM[$i][1] And $dn <= $RM[$i][2] соответствует как RM 30 (∅10-25), так и RM 40 (∅21,5-34,5).
Как сделать, чтоб если условию $dn >= $RM[$i][1] And $dn <= $RM[$i][2] удовлетворяет несколько значений (например, RM 30 (∅10-25) и RM 40 (∅21,5-34,5)), то выводилось последнее т.е. RM 40 (∅21,5-34,5).
и соответственно ответ был таким: 23 – 35:   RM 40 (∅21,5-34,5), RM 60 (∅28-54)

Код: AutoIt [Выделить]
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iInput1
Global $iInput2

GUICreate('Тест', 770, 180, -1, -1, -1, $WS_CLIPCHILDREN)
$nInput1 = GUICtrlCreateInput('23', 10, 10, 40, 20)
$nInput2 = GUICtrlCreateInput('35', 65, 10, 40, 20)
$nInput3 = GUICtrlCreateEdit('', 130, 10, 300, 100)
$nInput4 = GUICtrlCreateEdit('', 450, 10, 300, 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()
            CabRM()
            $iInput1 = $dn

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

    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($nInput3, "Некорректный диапазон")
  GUICtrlSetData($nInput3, $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($nInput3, $TCM[$i][0] & ', ', 1)
        Else
          ;$k = $i
          ConsoleWrite($TCM[$i][0] & @CRLF)
          GUICtrlSetData($nInput3, $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($nInput4, "Некорректный диапазон")
  GUICtrlSetData($nInput4, $dn & ' – ' & $dk & ':' & @TAB)
  For $i = 0 To UBound($RM) - 1
    If $dn >= $RM[$i][1] And $dk <= $RM[$i][2] Then Return GUICtrlSetData($nInput4, $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($nInput4, $RMe[$i][0], 1)
  Next
  ;GUICtrlSetData($nInput4, "Не найдено")
  For $i = 0 To UBound($RM) - 1
    If $dn >= $RM[$i][1] And $dn <= $RM[$i][2] Then
      For $i = $i To UBound($RM) - 1
        GUICtrlSetData($nInput4, $RM[$i][0] & ", ", 1)
        If $dk >= $RM[$i][1] And $dk <= $RM[$i][2] Then Return
      Next
    EndIf
  Next
EndFunc
 

97
Был бы документ в формате ворд или эксель, было бы проще, для них есть соответствующие udf. А вот с пдф я бы связываться не стал, как ковырять такие файлы честно даже и не знаю, геморойные они какие то.
Но даже если бы формат документов был, например, ворд, информации мало, нужен пример обозначения договора. Например - только цифры, или цифры и буквы, или цифры и буквы и спец символы какие нибудь, и т.п. - все возможные варианты обозначений короче говоря.
99
Общие вопросы по AutoIt / Re: Значение массива по условию
« Последний ответ от InnI Отправлен Август 15, 2017, 17:48:05 »
joparezzz
Цитировать
вместо сообщения "Не найдено" выводить несколько кабельных вводов перекрывающих диапазон
Код: AutoIt [Выделить]
...
;~   GUICtrlSetData($nInput4, "Не найдено")
  For $i = 0 To UBound($RM) - 1
    If $dn >= $RM[$i][1] And $dn <= $RM[$i][2] Then
      For $i = $i To UBound($RM) - 1
        GUICtrlSetData($nInput4, $RM[$i][0] & ", ", 1)
        If $dk >= $RM[$i][1] And $dk <= $RM[$i][2] Then Return
      Next
    EndIf
  Next
EndFunc

100
Регулярные выражения и прочее / Re: [RegExp] Получить часть GET ответа
« Последний ответ от Maildog Отправлен Август 15, 2017, 17:40:20 »
Разобрался, все работает (пока что)), всем спасибо!  :beer:
Страницы: 1 ... 8 9 [10]