Автор | Сообщение |
|
| постоянный участник
|
Пост N: 3084
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 21:05. Заголовок: Как передать результат между ДВУМЯ exe-никами ?
Как решить задачу: есть 2 моих ехе-ника, как вернуть результат действия второго ехе-ника в первый, который вызывает второй ? Ну типа такой задачи - из основного модуля вызывается доп.модуль EXE-ник (печать или почтовик и т.д.). Вот результат действий доп.модуля (отпечатал юзер документ или нет, ушло письмо на почту или нет) нужно вернуть в основной модуль, и результат записать с той записи в базе, откуда вызывался доп.модуль. Просто юзер может уйти с этой записи, или как то запретить уходить с этой записи, пока запущен Доп.модуль ? Может это и извращение, но нужно в базе видеть что было сделано с этой записью. Как можно реализовать такой алгоритм ?
|
|
|
Ответов - 16
[только новые]
|
|
|
| |
Пост N: 77
Зарегистрирован: 21.04.13
|
|
Отправлено: 12.11.13 21:15. Заголовок: В этой же таблице в этой же записи
А что мешает - В этой же (совместной расшаренной) таблице в этой же записи заполнить поле-отметку результата выполнения дочернего exe ( он ее и заполнит, если запись не будет блокирована )
|
|
|
|
| |
Пост N: 3712
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.13 21:25. Заголовок: Andrey пишет: Как м..
Andrey пишет: цитата: | Как можно реализовать такой алгоритм ? |
| как вариант результат работы дочернего модуля записать в массив и сохранить его в файл а из основного модуля считать данные массива.
|
|
|
|
| постоянный участник
|
Пост N: 3086
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 21:41. Заголовок: petr707 пишет: ( он..
petr707 пишет: цитата: | ( он ее и заполнит, если запись не будет блокирована ) |
| Запись блокирована в основной программе. Dima пишет: цитата: | как вариант результат работы дочернего модуля записать в массив и сохранить его в файл а из основного модуля считать данные массива. |
| А как быть, если юзер уйдет с этой записи ? Или вообще закроет базу ? А в доп.модуле еще ничего не сделает ?
|
|
|
|
| |
Пост N: 79
Зарегистрирован: 21.04.13
|
|
Отправлено: 12.11.13 21:59. Заголовок: Вопросы не вполне понятны
какое дело дочернему процессу , что будет делать родитель? Вы передайте ему - номер или ИД записи таблицы, в которую нужно занести результат. У дочернего процесса - свой контекст исполнения, как будто это еще один юзер основной проги.
|
|
|
|
| |
Пост N: 3713
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.13 22:51. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как быть, если юзер уйдет с этой записи ? Или вообще закроет базу ? А в доп.модуле еще ничего не сделает ? |
| Ну мона устроит ожидание если то что делает дочерняя прога не длится очень долго . Ждать результата от нее и анализировать.
|
|
|
|
| постоянный участник
|
Пост N: 3087
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 23:34. Заголовок: Dima пишет: Ну мона..
Dima пишет: цитата: | Ну мона устроит ожидание если то что делает дочерняя прога не длится очень долго . |
| Каким образом ?
|
|
|
|
| |
Пост N: 3714
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.13 23:51. Заголовок: Andrey пишет: Каким..
Andrey пишет: Мы этот вопрос уже похоже проходили. Создай файлик какой нить из основной проги и жди пока его не удалит дочерняя прога Возможно мьютексы можно заюзать.............(не проверял)
|
|
|
|
| |
Пост N: 991
Зарегистрирован: 11.06.10
|
|
Отправлено: 13.11.13 09:55. Заголовок: Еще можно вести для ..
Еще можно вести для таких целей самостоятельную базу-журнал-лог-событий и там смотреть кто что и когда сделал. А результат можно вернуть след. образом: func main() local cOut, cErr, cCommand cCommand := "mingw32-make.exe" t1 := hb_processRun( cCommand, , @cOut, @cErr ) ?"cOut=",cOut ?"cErr=",cErr ?"t1=",t1 return nil результат: C:\dev\test\hb_procces\>aa.exe cOut= cErr= mingw32-make.exe: *** No targets specified and no makefile found. Stop. t1= 2 с другой прогой: func main() local cOut, cErr, cCommand cCommand := "arj t arh.arj" t1 := hb_processRun( cCommand, , @cOut, @cErr ) ?"cOut=",cOut ?"cErr=",cErr ?"t1=",t1 return nil результат: C:\dev\test\hb_procces\>aa.exe cOut= ARJ32 v 3.10, Copyright (c) 1998-2004, ARJ Software Russia. [23 Jun 2005] Extended attributes enabled Can't find arh.arj Found 1 error(s)! cErr= t1= 6 т.е. смотреть cOut и cErr
|
|
|
|
| постоянный участник
|
Пост N: 3088
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.11.13 12:59. Заголовок: AlexMyr То что нужн..
AlexMyr То что нужно ! Спасибо БОЛЬШОЕ !
|
|
|
|
| Администратор
|
Пост N: 3038
Зарегистрирован: 23.05.05
|
|
Отправлено: 13.11.13 13:51. Заголовок: Функцией ErrorLevel(..
Функцией ErrorLevel( <nValue> ) можно установить значение ErrorLevel 2-й программы, которое потом проанализировать после вызова __Run() или hb_processRun() в вызывающей программе.
|
|
|
|
| постоянный участник
|
Пост N: 3089
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.11.13 14:06. Заголовок: Pasha, спасибо ! Хоч..
Pasha, спасибо ! Хочется большего, передать не только код, но и еще строковые данные...
|
|
|
|
|
| |
Пост N: 3715
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.11.13 14:34. Заголовок: Andrey пишет: Хочет..
Andrey пишет: цитата: | Хочется большего, передать не только код, но и еще строковые данные... |
| Вариант FT_SAVEARR, FT_RESTARR
|
|
|
|
| постоянный участник
|
Пост N: 3090
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.11.13 17:16. Заголовок: Dima пишет: Вариант..
Dima пишет: цитата: | Вариант FT_SAVEARR, FT_RESTARR |
|
|
|
|
|
| |
Пост N: 81
Зарегистрирован: 21.04.13
|
|
Отправлено: 13.11.13 17:48. Заголовок: dbf- не только...
dbf - Это не только место хранения данных (обмена) для разных юзеров одной программы, но и разных программ одного юзера! :-) P/s/ Cмайлики почему-то перестали вставляться!
|
|
|
|
| постоянный участник
|
Пост N: 3091
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.11.13 16:57. Заголовок: petr707 пишет: но и..
petr707 пишет: цитата: | но и разных программ одного юзера! :-) |
|
|
|
|
|
| |
Пост N: 9
Зарегистрирован: 22.09.13
|
|
Отправлено: 02.01.16 00:06. Заголовок: AlexMyr пишет: func..
AlexMyr пишет: цитата: | func main() local cOut, cErr, cCommand cCommand := "mingw32-make.exe" t1 := hb_processRun( cCommand, , @cOut, @cErr ) ?"cOut=",cOut ?"cErr=",cErr ?"t1=",t1 return nil |
| Подскажите, где посмотреть про hb_processRun() более подробно? Особенно нужен перечень и трактовка возвращаемых значений, здесь t1 Как понимаю, по ним можно судить об удачности выполнения запускаемого процесса. Спасибо!
|
|
|
|