|
|
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
подключаюсь к MS Word через OLEObject: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Как мне отловить ошибку и хотя бы выполнить destroy wordapp? У OLEObject есть события Error и ExternalError, a как их подключить в рантайме? PB 5.0.01 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 12:51 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Не ужели даже Филипп ничего не может (или не хочет) сказать по данному поводу? Мне скоро предстоит мучится с OLE, хотелось бы узнать некоторые вещи заранее. Please, Master ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 14:17 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
>Илья Зайцев Наследник от oleobject. Перехвать событий и/или функций. Вывод результата выполнения наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 17:18 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Человек про РВ5 спрашивает. О чём тут говорить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 00:46 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Ok, возьмем PB 9.0 генерю по шаблону пустое SDI - приложение, на окно About шлепаю кнопку, в обработчике клика пишу Код: plaintext 1. 2. 3. 4. 5. 6. Дальше компилирую в exe (PBD), запускаю exe. Давлю кнопку, запускается Word, выдается сообщение об ошибке и - вуаля - приложение молча закрывается . Собственно, мне бы хотелось чтобы оно не закрывалось :) С PB 5.0 aналогично, только приложение закрывается, даже будучи запущенным из IDE. Win2000 eng 5.00.2195 SP3 2 Raven A Ага, сделал наследника, вызов передал, только все равно приложение дохнет, хотя destroy выполняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 07:58 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Это в самом простом случае, проверил и с ехешником - все работает корректно. PB 9.0 6096 И нечего сразу на Филиппа наезжать... хамить не надо - тут никто никому не обязан. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Да, если лениво на каждый оператор свой эксепшн ставить, посмотрите эксепшены событий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 08:28 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Спасибо, я не знал, что в свежих версиях PB есть exceptions. В 5.0 их не было, а мне на нем еще некоторое время работать :(. PS. Если кого обидел, прошу прощения, намерения такого не имел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 11:22 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
>Илья Зайцев Ну если с PB5 еще жить, то повторюсь: - создать наследника от oleobject ( myole) - в код на myole.event error добавить логику обработки ошибки, например выставление твоего признака/кода ошибки на instant variable (как вариант) После обработки ошибки установить требуемое значение параметра события action (см.Help), например ExceptionIgnore! - в вызывающем коде проверять после вызова функции состояние myole (не забыть сбросить состояние ошибки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 14:47 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
После вставки action = ExceptionIgnore! все стало хорошо. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 16:21 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Raven A>Илья Зайцев Наследник от oleobject. Перехвать событий и/или функций. Вывод результата выполнения наружу. наследовать не получится... Вернее, получится, но при первой же попытке присвоить экземпляру нового класса какой-то оleobject билдер просто отвалится по ошибке. Проходил уже. вот например: n_cst_ole a // здесь, n_cst_ole - класс, пронаследованный от oleobject a = istr_apps .server.Application.Documents.Item(j) Еслит отбросить мишуру, то понятно, что я пытаюсь присвоить экземпляру класса вордовую страницу. Так вот, если с oleobject это работает, то с наследниками уже нет, ругается, что не может привести переменные к одному типу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 16:22 |
|
||
|
обработка ошибок OLE
|
|||
|---|---|---|---|
|
#18+
Может поможет int rc if trim(nvl(version,'')) = '' then version=ProgID rc=ole_object.ConnectToObject('', version) ole_error='' CHOOSE CASE rc CASE 0 return true CASE -1 ole_error='Invalid call: the argument is the Object property of a control' CASE -2 ole_error='Class name "'+version+'" not found' CASE -3 ole_error='Object could not be created' CASE -4 ole_error='Could not connect to object' CASE -5 ole_error="Can't connect to the currently active object" CASE -6 ole_error='Filename is not valid' CASE -7 ole_error="File not found or file couldn't be opened" CASE -8 ole_error='Load from file not supported by server' CASE ELSE ole_error='Other error' END CHOOSE return false ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2007, 18:31 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=32309413&tid=1337376]: |
0ms |
get settings: |
4ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 319ms |

| 0 / 0 |
