Тема: Помогите разобраться с ошибками

1. После определённого количества запусков макроса
    с вызовом Pickfirstselection начинает выдавть на этой строке:
   "Calling method clear of interface Iacadselection filed"
(лечится только перезагрузкой документа)
2.  Имеется макрос с таким фрагментом:
Dim ss1 As String
Sub proc3()
.........
Interaction.SendKeys ss1, True
ss1 = ThisDrawing.Utility.GetString(1)
Глюк: вероятностно символы строки S1 заменяются
на "?" иногда в соответствии с символами введённой
ранее строки, иногда - не в тему (Замечал только для
кириллицы)
3. Пытаюсь из Delphi послать нажатие "enter" на окно
ARX приложения, но почему то срабатывает только
с N-го раза, N =[1..8] (с другими окнами всё нормально)

Re: Помогите разобраться с ошибками

1) SelectionSet - ограниченный ресурс. После использования его нужно освобождать методом Clear
2) Пропускаем ...
3) ENTER не обязательно означает выход из диалогового окна - все зависит от обработчика (например при неправильно заполненных полях ввода). Кроме того как минимум нужно установить фокус на кнопку выхода.

Re: Помогите разобраться с ошибками

Со всем разобрался кроме п.2
Кстати самый важный вопрос!
(и еще непонятно:  иногда из посылаемой строки изчезают некоторые пробелы и её нельзя редактировать)
Пожайлуста помсоветуйте чего нибудь

Re: Помогите разобраться с ошибками

Глюк: вероятностно символы строки S1 заменяются
на "?" иногда в соответствии с символами введённой
ранее строки, иногда — не в тему (Замечал только для
кириллицы)

Не уверен, так как на VBA не пишу, но IMHO проюлема связана с текущей раскладкой клавиатуры (для ввода кирилицы она должна быть переключена на русскую раскладку). Как это делается на VBA - не в курсе. Надеюсь, что поиск поможет.

Re: Помогите разобраться с ошибками

> uswer
2
Из справочника
SendKeys - "Программная имитация ввода с клавиатуры в активное окно". Причем, если стоит True, то "управление возвращается вызывающей процедуре только после завершения обработки переданных нажатий клавиш"
Исходя из этого, мне не понятен смысл участка кода. Какая ставится задача?
Вы хотите программно ввести команду в текстовую строку? Но GetString, как я понимаю, останавливает программу до ввода непосредственно с клавиатуры.

Re: Помогите разобраться с ошибками

Дело в том, что при запросе текста отображается вводимый
кириллич. текст нормально, а ежели текст вводился ранее
то ТЕКСТ ПО УМОЛЧАНИЮ который создаётся sendkeys
иногда соответствует ранее введённому, иногда - нет(см. выше) дебуггер показал что ПЕРЕД sendkeys строка S
УЖЕ покорёжена...
brigval
напиши вышеуказанный код - это работает (не знаю почему) кстати тоже тоже вопрос!

Re: Помогите разобраться с ошибками

uswer пишет:

...дебуггер показал что ПЕРЕД sendkeys строка S
УЖЕ покорёжена...

В твоем коде оне не покорежена - она не инициализирована.

Re: Помогите разобраться с ошибками

То есть как???
Переменная S описана как глобальная, или... о чём ты?

Re: Помогите разобраться с ошибками

> uswer
Если перед sendkeys S уже покорежена, то или она не инициализирована (ей не присвоено никакое значение) или ее испортила твоя программа. В том куске, который ты здесь показал до sendkeys её значение не менялось.

Re: Помогите разобраться с ошибками

В программе даже обращения нет к этой переменной вот:
Dim ss1, ss2 As String
sub gluk()
Interaction.SendKeys ss1, True
ss1 = ThisDrawing.Utility.GetString(1)
Interaction.SendKeys ss2, True
ss2 = ThisDrawing.Utility.GetString(1)
...
<<<программа
...
end sub
Соответственно при первом запуске (горючая клавиша)
запрос двух (пустых по умолчанию) строк, далее
- то что ввёл (либо пропустил введённое sendkeys-ом как по умолчанию) и на N-ом вводе кириллической строки начинаются глюки (никакой связи с содержанием строки(пробелы там, точки...) нет)
Может в описании ошибка? (кстати тоже тема)