Автор Тема: StringRegExp не находит пробелы  (Прочитано 3394 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн fyviffitoffo [?]

  • Сообщений: 36
  • Репутация: -1
  • Пол: Женский
    • Награды
StringRegExp не находит пробелы
« Создано: Апрель 04, 2014, 18:35:00 »
Привет. Нужно автоматизировать 1с предприятие 7.7. Скрипт должен искать пробелы в нужных строках. Но почему то он их не находит. Пробовал разные варианты в т.ч. с StringIsSpace, но ничего не находит все равно. Если икать через 1с, тогда работает. Подскажите в чём проблема.

Код: AutoIt [Выделить]
Local $R, $C, $cell
WinActivate("[CLASS:Afx:400000:0:0:0:3c100d3]")

For $R = 8 To 32
 ControlClick("[CLASS:Afx:400000:0:0:0:3c100d3]", "", "[CLASS:Edit; INSTANCE:3]")
   ControlCommand("[CLASS:Afx:400000:0:0:0:3c100d3]", "", "[CLASS:Edit; INSTANCE:3]", "EditPaste", 'R'& $R &'C4')
   Send("{ENTER}")
   $cell = ControlCommand("[CLASS:Afx:400000:0:0:0:3c100d3]", "", "[CLASS:AfxWnd42; INSTANCE:4]", "FindString", ' ')
   If StringRegExp("\s", "$cell") = 1 Then
      MsgBox(4096, "", "найдено")
   EndIf
   Next
 


« Последнее редактирование: Апрель 07, 2014, 16:37:22 от fyviffitoffo »

Русское сообщество AutoIt

StringRegExp не находит пробелы
« Отправлен: Апрель 04, 2014, 18:35:00 »

Онлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: StringRegExp не находит пробелы
« Ответ #1, Отправлен: Апрель 04, 2014, 18:51:10 »
fyviffitoffo  [?]
Цитировать
в чём проблема
Если вы хотите искать в тексте, находящемся в переменной, то
Код: AutoIt [Выделить]
If StringRegExp($cell, "\s") = 1 Then

Но учтите, что FindString вернёт индекс строки, а не текст.

Оффлайн C2H5OH [?]

  • Знаю я тут одно место с офигенными циркулями...
  • AutoIt Гуру
  • *****
  • Сообщений: 1473
  • Репутация: 332
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: StringRegExp не находит пробелы
« Ответ #2, Отправлен: Апрель 04, 2014, 18:51:50 »
Ошибок в скрипте нет.
Действительно, в тексте "\s" не встречается слово "$cell".

А проблема, я думаю, в раздвоении личности...
Рано или поздно все станет понятно, все станет на свои места и выстроится в единую красивую схему, как кружева. Станет понятно, зачем все было нужно, потому что все будет правильно.

Оффлайн fyviffitoffo [?]

  • Сообщений: 36

  • Автор темы
  • Репутация: -1
  • Пол: Женский
    • Награды
Re: StringRegExp не находит пробелы
« Ответ #3, Отправлен: Апрель 07, 2014, 11:49:40 »
Цитировать
вернёт индекс строки
Я кстати так и не понял что являет собой индекс строки. А пробелы StringRegExp не находит потому что ControlCommand всегда возвращает 0 почему то. Я пробовал SelectString, GetCurrentSelection, GetLine и GetSelected, но тоже самое. Может проблема в том что строка класса AfxWnd42, а не Edit, тогда как добыть из нее текст?

Русское сообщество AutoIt

Re: StringRegExp не находит пробелы
« Ответ #3 Отправлен: Апрель 07, 2014, 11:49:40 »

Онлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: StringRegExp не находит пробелы
« Ответ #4, Отправлен: Апрель 07, 2014, 13:18:38 »
fyviffitoffo  [?]
Цитировать
не понял что являет собой индекс строки
Я решил, что AfxWnd42 - это аналог ListBox или ComboBox, т.к. вы используете FindString.
А как выглядит окно AfxWnd42 ? Если оно похоже на таблицу, то попробуйте
Код: AutoIt [Выделить]

Оффлайн fyviffitoffo [?]

  • Сообщений: 36

  • Автор темы
  • Репутация: -1
  • Пол: Женский
    • Награды
Re: StringRegExp не находит пробелы
« Ответ #5, Отправлен: Апрель 07, 2014, 14:13:08 »
с GetText возвращает пустую строку на всё, даже если в колонке есть значение. В Visible text оно отображает нужные значения, значит как то же его можно получить? Окно похоже на формат электронных таблиц. Что ещё интересно, что значение в Visible text появляется после движения мыши. Я дополнил код таким образом:
Код: AutoIt [Выделить]
$pos = MouseGetPos()
 MouseMove($pos[0] + 1, $pos[1] + 1, 0)
$cell = ControlListView("[CLASS:Afx:400000:0:0:0:20a0b0b]", "", "[CLASS:AfxWnd42; INSTANCE:4]", "FindItem", " ")
MsgBox(4096, "", $cell)

С SelectAll всегда возвращает 1. А если использовать GetText то что указать в номер пункта и номер колонки?

нужно добыть значение 536,085.72 например.

Онлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: StringRegExp не находит пробелы
« Ответ #6, Отправлен: Апрель 07, 2014, 14:28:38 »
fyviffitoffo  [?]
Цитировать
В Visible text оно отображает нужные значения
Попробуйте так
Код: AutoIt [Выделить]
ControlGetText("[CLASS:Afx:400000:0:0:0:20a0b0b]", "", "[CLASS:AfxWnd42; INSTANCE:4]")


Цитировать
если использовать GetText то что указать в номер пункта и номер колонки?
Цифры (числа). Левая верхняя клетка: 0, 0. Первая цифра - пункт (строка), вторая - колонка (столбец). Но может и не работать...

Оффлайн fyviffitoffo [?]

  • Сообщений: 36

  • Автор темы
  • Репутация: -1
  • Пол: Женский
    • Награды
Re: StringRegExp не находит пробелы
« Ответ #7, Отправлен: Апрель 07, 2014, 16:21:46 »
ControlGetText возвращает пустую строку. AutoIt Window Info может давать недостоверную информацию о классе? Потому что как только я хотел получить текст из [CLASS:Edit; INSTANCE:3] (где координаты ячейки) то оно всё норм работает. А с [CLASS:AfxWnd42; INSTANCE:4] ничего не хочет вытягивать. Или это может сама программа такая.

Русское сообщество AutoIt

Re: StringRegExp не находит пробелы
« Ответ #7 Отправлен: Апрель 07, 2014, 16:21:46 »

Онлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: StringRegExp не находит пробелы
« Ответ #8, Отправлен: Апрель 07, 2014, 16:38:49 »
fyviffitoffo
AutoIt работает со стандартными элементами: Edit, Listbox, Button, SysListView32 и др. С остальными можно попробовать работать как с обычными, но это не всегда получается. Для "нестандартных" элементов есть другой, более сложный и трудоёмкий способ http://www.autoitscript.com/forum/topic/153520-iuiautomation-ms-framework-automate-chrome-ff-ie

Оффлайн fyviffitoffo [?]

  • Сообщений: 36

  • Автор темы
  • Репутация: -1
  • Пол: Женский
    • Награды
Re: StringRegExp не находит пробелы
« Ответ #9, Отправлен: Апрель 08, 2014, 13:40:18 »
решил проблему иным способом:
Код: AutoIt [Выделить]
For $R = 8 To 29
   ControlClick("[CLASS:Afx:400000:0:0:0:dd05b1]", "", "[CLASS:Edit; INSTANCE:3]")
   ControlCommand("[CLASS:Afx:400000:0:0:0:dd05b1]", "", "[CLASS:Edit; INSTANCE:3]", "EditPaste", 'R'& $R &'C4')
   Send("{ENTER}")
   Send("^{INSERT}")
   $cell = ClipGet()
   If StringRegExp($cell, "\s") = 1 Then
   MsgBox(4096, "", "найдено")
   EndIf
Next


А если использовать тот модуль то можно автоматизировать проги где нет Visible text?

Онлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 3887
  • Репутация: 1023
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: StringRegExp не находит пробелы
« Ответ #10, Отправлен: Апрель 08, 2014, 13:53:35 »
fyviffitoffo  [?]
Цитировать
если использовать тот модуль то можно автоматизировать проги
Тот модуль как раз и создан для того, чтобы расширить стандартные средства AutoIt. Но бывают такие элементы, что даже тот модуль не читает с них текст.

Русское сообщество AutoIt

Re: StringRegExp не находит пробелы
« Ответ #10 Отправлен: Апрель 08, 2014, 13:53:35 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
9 Ответов
3427 Просмотров
Последний ответ Август 26, 2012, 22:56:35
от urrya
1 Ответов
1690 Просмотров
Последний ответ Октябрь 22, 2013, 01:23:34
от inververs
3 Ответов
1954 Просмотров
Последний ответ Декабрь 28, 2014, 22:18:30
от Garrett
0 Ответов
764 Просмотров
Последний ответ Декабрь 27, 2014, 21:17:38
от madmasles
3 Ответов
2012 Просмотров
Последний ответ Май 02, 2015, 08:46:20
от C2H5OH
2 Ответов
1113 Просмотров
Последний ответ Декабрь 11, 2015, 16:57:33
от amai
1 Ответов
1615 Просмотров
Последний ответ Август 10, 2016, 16:08:18
от InnI
13 Ответов
998 Просмотров
Последний ответ Май 22, 2017, 15:11:59
от inververs
4 Ответов
2816 Просмотров
Последний ответ Ноябрь 12, 2017, 23:24:39
от Alofa
3 Ответов
399 Просмотров
Последний ответ Январь 29, 2018, 14:01:13
от perven1