Страница 1 из 1
Halt и RunCode
Добавлено: 19 Февраль 2008, 9:37
SSTA
Здравствуйте.
Имеются два приложения: первое - порождающее, которое запускает по run второе. Во втором по некоторым условиям выполняется полный останов по HALT (10). Дока говорит, что я эту 10 могу отловить RunCode (как у последнего по run запускавшегося приложения). А 10 не ловится, то есть RunCode = 0. Что может быть? Спасибо.
АТ
Re: Halt и RunCode
Добавлено: 19 Февраль 2008, 10:06
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.
Re: Halt и RunCode
Добавлено: 19 Февраль 2008, 10:35
SSTA
"Ждать" - не пройдёт, потому что приложения потом взаимодействуют по DDE и halt (10) выдаётся после многочисленных действий: например - ошибка открытия файла и пр.
Re: Halt и RunCode
Добавлено: 19 Февраль 2008, 10:53
Admin
SSTA писал(а):"Ждать" - не пройдёт, потому что приложения потом взаимодействуют по DDE и halt (10) выдаётся после многочисленных действий: например - ошибка открытия файла и пр.
Ты определись что тебе нужно! Как ты получишь
RunCode() если
RUN у тебя ничего не ждет?
Общайся через
DDE, через общую область памяти или через файлы.
Re: Halt и RunCode
Добавлено: 20 Февраль 2008, 2:23
SSTA
Дык и определился ведь.
Подробнее: приложение 1 запускает приложение 2 и начинает по таймеру ожидать ответов по DDE каналу, или ненормального завершения. Приложение 2 - диалог, результатом которого может быть либо ответ по DDE, либо аварийное окончание по Halt (10) из-за, например, неоткрытия файлов. С DDE всё нормально, а вот с аврийным окончанием нет. Механизм работы был построен на утвеждении ДОКИ "Процедура RUNCODE возвращает код возврата, переданный операционной системе последней командой, исполненной оператором RUN. Этот код возврата является тем же самым кодом, который передается оператором HALT в Clarion-программе...": то есть, как я понимаю, что бы ни делало 2 приложение, код, посылаемый Halt может быть отловлен порождающим приложением в каком-нибудь очередном цикле таймера.
Общаться "через..." возможно и придётся, но ведь описанный в доке способ не так уж плох, или я чего не понял?
Re: Halt и RunCode
Добавлено: 20 Февраль 2008, 7:39
Admin
SSTA писал(а):Процедура RUNCODE возвращает код возврата, переданный операционной системе последней командой, исполненной оператором RUN ... или я чего не понял?
Саша я не знаю как ты понял
Я догадываюсь как это работает.
Clarion запустил программу по
RUN (без
waitflag) и забыл! Или ждет ответа от программы с
waitflag = TRUE
Re: Halt и RunCode
Добавлено: 20 Февраль 2008, 7:42
Admin
Запускаешь программу 2 из программы 1
...
В программе 2 перед HALT`ом создаешь файл halt.dat
...
В программе 1 в ACCEPT ... END проверяешь файл halt.dat на диске
Если файл появился - значит прога 2 вышла по ошибке
Удаляешь файл halt.dat
Re: Halt и RunCode
Добавлено: 20 Февраль 2008, 9:28
SSTA
Да, похоже, я понадеялся на лишнее... Спасибо, сделаю проверенными способами.
Re: Halt и RunCode
Добавлено: 20 Февраль 2008, 9:38
Дед Пахом
Кстати, из хелпа по HALT (CW6):
HALT should not be used in multi-DLL applications, and should only be used as a debugging technique.
Re: Halt и RunCode
Добавлено: 20 Февраль 2008, 10:45
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 файле ...