Что нового

Данные, строки Строка с латиницей и кириллицей

juder

Новичок
Сообщения
19
Репутация
0
Добрый день!
Подскажите, это как то можно победить?
глюк.JPG
Что хотелось получить:
Код:
#Include <Array.au3>
$po = WinWait('[CLASS:TADialog]')
ControlFocus($po,"",'[CLASS:TADBCombobox; INSTANCE:6]')
$yt = ControlGetText($po,"",'[CLASS:TADBCombobox; INSTANCE:6]')
$arr = ControlGetPos($po,"",'[CLASS:TADBCombobox; INSTANCE:6]')
$x=$arr[2]
$y=$arr[3]
;~ _ArrayDisplay($arr)
ControlClick ($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"main",1, $x-8,$y-8)
Sleep(500)
Controlsend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"Уралгазсервис(обсл. до БКТ)")
Sleep(2200)
Send("{DOWN}")
Send("{ENTER}")

Как вообще быть в таких случаях? (знаки препинания или смесь латиницы и кириллицы)
ЗЫ Версия AUTOIT очень древняя(3.3.6.1 от 16.04.2010) сменить нет возможности.
 

Вложения

  • глюк.JPG
    глюк.JPG
    11.6 КБ · Просмотры: 2

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Попробуйте
Код:
ControlSetText()
 

Oki

Продвинутый
Сообщения
452
Репутация
62
При чём тут латиница? Очевидно, символы в верхнем регистре ("У", "(", "Б", "К", "Т" и ")") превратились в символы, им соответствующие, когда не нажимать на <Shift>. Вопрос нужно ставить о том, почему так получилось, и как это лечится.
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
показывает то, что установил, но не принимает значение
Да, есть такие элементы, которые реагируют только на нажатия клавиш. Попробуйте после установки текста нажать что-нибудь универсальное.
Код:
ControlSetText($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"Уралгазсервис(обсл. до БКТ)")
ControlSend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"{space}{bs}")
; или так, если курсор в начале
ControlSend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"{bs}")
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
Controlsend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"Уралгазсервис(обсл. до БКТ)")
А если поменять функцию?
Код:
ControlSetText()

Сообщение автоматически объединено:

А, InnI это уже практически посоветовал, при предыдущем прочтении прошло мимо моего внимания, что у него в первой строке именно эта функция теперь фигурирует. Вот что значит опыт: не уловил человек точную причину ошибки, а совет универсальный всё-таки дал.
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
не уловил человек точную причину ошибки
Всё я "уловил". Причина "ошибки" - нестандартные контролы (скорее всего Delphi).
Можно попытаться обойти так
Код:
ControlSend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"Уралгазсервис+9обсл. до БКТ+0")

Но ControlSetText() надёжнее. Поэтому сразу и предложил.
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
флаг 1 в конце не подходит?
Вряд ли. Скорее всего будет то же самое.
Сообщение автоматически объединено:

Можно попытаться обойти так
Код:
ControlSend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"Уралгазсервис+9обсл. до БКТ+0")
Если бы это решало проблему, то, пожалуй, только со скобками. А она проявилась и на заглавных буквах.
Но ControlSetText() надёжнее. Поэтому сразу и предложил.
Да, даже в справке по функции
Код:
ControlSend()
намекают иногда пользоваться этой более надёжной функцией.
Всё я "уловил". Причина "ошибки" - нестандартные контролы (скорее всего Delphi).
Прошу без обид, имелось в виду, как это в точности ошибочно работает, но я не настаиваю на своей формулировке. Во всяком случае, надо было сразу обратить внимание, что название топика не соответсвует решаемой проблеме.
 
Последнее редактирование:
Автор
J

juder

Новичок
Сообщения
19
Репутация
0
Да, есть такие элементы, которые реагируют только на нажатия клавиш. Попробуйте после установки текста нажать что-нибудь универсальное.
Код:
ControlSetText($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"Уралгазсервис(обсл. до БКТ)")
ControlSend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"{space}{bs}")
; или так, если курсор в начале
ControlSend($po,"",'[CLASS:TADBCombobox; INSTANCE:6]',"{bs}")
Премного благодарен! Этот вариант сработал! В моем случае вариант смешанного текста (англ+русский) при этом способе тоже работает. Еще и с вводом IP проблема решилась, а то в зависимости от раскладки были такие варианты: 222.222.222.222 - 222/222/222/222 - 222ю222ю222ю222
 
Верх