Halt и RunCode
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Halt и RunCode
Здравствуйте.
Имеются два приложения: первое - порождающее, которое запускает по run второе. Во втором по некоторым условиям выполняется полный останов по HALT (10). Дока говорит, что я эту 10 могу отловить RunCode (как у последнего по run запускавшегося приложения). А 10 не ловится, то есть RunCode = 0. Что может быть? Спасибо.
АТ
Имеются два приложения: первое - порождающее, которое запускает по run второе. Во втором по некоторым условиям выполняется полный останов по HALT (10). Дока говорит, что я эту 10 могу отловить RunCode (как у последнего по run запускавшегося приложения). А 10 не ловится, то есть RunCode = 0. Что может быть? Спасибо.
АТ
C уважением, Александр Т.
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Halt и RunCode
RTFM по команде RUNSSTA писал(а):Здравствуйте.
Имеются два приложения: первое - порождающее, которое запускает по run второе. Во втором по некоторым условиям выполняется полный останов по HALT (10). Дока говорит, что я эту 10 могу отловить RunCode (как у последнего по run запускавшегося приложения). А 10 не ловится, то есть RunCode = 0. Что может быть? Спасибо.
АТ
RUN( command [, waitflag ] )
waitflag An integer constant, variable, or EQUATE indicating whether RUN should launch the command and wait for its termination, or immediately return after launching. If omitted or zero (0), control immediately returns to the statement following the RUN. If one (1), control returns to the statement following the RUN only after the command has completed its execution.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Halt и RunCode
"Ждать" - не пройдёт, потому что приложения потом взаимодействуют по DDE и halt (10) выдаётся после многочисленных действий: например - ошибка открытия файла и пр.
C уважением, Александр Т.
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Halt и RunCode
Ты определись что тебе нужно! Как ты получишь RunCode() если RUN у тебя ничего не ждет?SSTA писал(а):"Ждать" - не пройдёт, потому что приложения потом взаимодействуют по DDE и halt (10) выдаётся после многочисленных действий: например - ошибка открытия файла и пр.
Общайся через DDE, через общую область памяти или через файлы.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Halt и RunCode
Дык и определился ведь.
Подробнее: приложение 1 запускает приложение 2 и начинает по таймеру ожидать ответов по DDE каналу, или ненормального завершения. Приложение 2 - диалог, результатом которого может быть либо ответ по DDE, либо аварийное окончание по Halt (10) из-за, например, неоткрытия файлов. С DDE всё нормально, а вот с аврийным окончанием нет. Механизм работы был построен на утвеждении ДОКИ "Процедура RUNCODE возвращает код возврата, переданный операционной системе последней командой, исполненной оператором RUN. Этот код возврата является тем же самым кодом, который передается оператором HALT в Clarion-программе...": то есть, как я понимаю, что бы ни делало 2 приложение, код, посылаемый Halt может быть отловлен порождающим приложением в каком-нибудь очередном цикле таймера.
Общаться "через..." возможно и придётся, но ведь описанный в доке способ не так уж плох, или я чего не понял?
Подробнее: приложение 1 запускает приложение 2 и начинает по таймеру ожидать ответов по DDE каналу, или ненормального завершения. Приложение 2 - диалог, результатом которого может быть либо ответ по DDE, либо аварийное окончание по Halt (10) из-за, например, неоткрытия файлов. С DDE всё нормально, а вот с аврийным окончанием нет. Механизм работы был построен на утвеждении ДОКИ "Процедура RUNCODE возвращает код возврата, переданный операционной системе последней командой, исполненной оператором RUN. Этот код возврата является тем же самым кодом, который передается оператором HALT в Clarion-программе...": то есть, как я понимаю, что бы ни делало 2 приложение, код, посылаемый Halt может быть отловлен порождающим приложением в каком-нибудь очередном цикле таймера.
Общаться "через..." возможно и придётся, но ведь описанный в доке способ не так уж плох, или я чего не понял?
C уважением, Александр Т.
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Halt и RunCode
Саша я не знаю как ты понялSSTA писал(а):Процедура RUNCODE возвращает код возврата, переданный операционной системе последней командой, исполненной оператором RUN ... или я чего не понял?

Я догадываюсь как это работает. Clarion запустил программу по RUN (без waitflag) и забыл! Или ждет ответа от программы с waitflag = TRUE
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Halt и RunCode
Запускаешь программу 2 из программы 1
...
В программе 2 перед HALT`ом создаешь файл halt.dat
...
В программе 1 в ACCEPT ... END проверяешь файл halt.dat на диске
Если файл появился - значит прога 2 вышла по ошибке
Удаляешь файл halt.dat
...
В программе 2 перед HALT`ом создаешь файл halt.dat
...
В программе 1 в ACCEPT ... END проверяешь файл halt.dat на диске
Если файл появился - значит прога 2 вышла по ошибке
Удаляешь файл halt.dat
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Halt и RunCode
Да, похоже, я понадеялся на лишнее... Спасибо, сделаю проверенными способами.
C уважением, Александр Т.
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Halt и RunCode
Кстати, из хелпа по HALT (CW6):
HALT should not be used in multi-DLL applications, and should only be used as a debugging technique.
С уважением, ДП
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Re: Halt и RunCode
Думаю в multi-DLL можно использовать, если HALT делать именно в EXE файле ...Дед Пахом писал(а):Кстати, из хелпа по HALT (CW6):
HALT should not be used in multi-DLL applications, and should only be used as a debugging technique.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса