Halt и RunCode

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Halt и RunCode

Сообщение SSTA »

Здравствуйте.
Имеются два приложения: первое - порождающее, которое запускает по run второе. Во втором по некоторым условиям выполняется полный останов по HALT (10). Дока говорит, что я эту 10 могу отловить RunCode (как у последнего по run запускавшегося приложения). А 10 не ловится, то есть RunCode = 0. Что может быть? Спасибо.
АТ
C уважением, Александр Т.
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: Halt и RunCode

Сообщение Admin »

SSTA писал(а):Здравствуйте.
Имеются два приложения: первое - порождающее, которое запускает по run второе. Во втором по некоторым условиям выполняется полный останов по HALT (10). Дока говорит, что я эту 10 могу отловить RunCode (как у последнего по run запускавшегося приложения). А 10 не ловится, то есть RunCode = 0. Что может быть? Спасибо.
АТ
RTFM по команде RUN

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.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Re: Halt и RunCode

Сообщение SSTA »

"Ждать" - не пройдёт, потому что приложения потом взаимодействуют по DDE и halt (10) выдаётся после многочисленных действий: например - ошибка открытия файла и пр.
C уважением, Александр Т.
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: Halt и RunCode

Сообщение Admin »

SSTA писал(а):"Ждать" - не пройдёт, потому что приложения потом взаимодействуют по DDE и halt (10) выдаётся после многочисленных действий: например - ошибка открытия файла и пр.
Ты определись что тебе нужно! Как ты получишь RunCode() если RUN у тебя ничего не ждет?
Общайся через DDE, через общую область памяти или через файлы.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Re: Halt и RunCode

Сообщение SSTA »

Дык и определился ведь.
Подробнее: приложение 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

Сообщение Admin »

SSTA писал(а):Процедура RUNCODE возвращает код возврата, переданный операционной системе последней командой, исполненной оператором RUN ... или я чего не понял?
Саша я не знаю как ты понял :)
Я догадываюсь как это работает. Clarion запустил программу по RUN (без waitflag) и забыл! Или ждет ответа от программы с waitflag = TRUE
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: Halt и RunCode

Сообщение Admin »

Запускаешь программу 2 из программы 1
...
В программе 2 перед HALT`ом создаешь файл halt.dat
...
В программе 1 в ACCEPT ... END проверяешь файл halt.dat на диске
Если файл появился - значит прога 2 вышла по ошибке
Удаляешь файл halt.dat
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
SSTA
Бывалый
Сообщения: 52
Зарегистрирован: 03 Февраль 2006, 5:41
Откуда: Хабаровск

Re: Halt и RunCode

Сообщение SSTA »

Да, похоже, я понадеялся на лишнее... Спасибо, сделаю проверенными способами.
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

Сообщение Admin »

Дед Пахом писал(а):Кстати, из хелпа по HALT (CW6):
HALT should not be used in multi-DLL applications, and should only be used as a debugging technique.
Думаю в multi-DLL можно использовать, если HALT делать именно в EXE файле ...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить