Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.10;
Скачать: CL | DM;

Вниз

Возврат значения из программы   Найти похожие ветки 

 
voyager ©   (2009-09-04 02:56) [0]

Здравствуйте.
Давно ничего не писал, и немного запамятовал. Как вернуть например строковое или числовое значение при выходе из программы. Например в программе есть меню, при выходе из программы нужно чтобы она возвращала имя выбранного пункта меню или его индекс. Зачем это надо. Далее это значение будет присвоено переменной в BAT файле и каким-то образом обработано.


 
Германн ©   (2009-09-04 03:18) [1]


> voyager ©   (04.09.09 02:56)
>
> Здравствуйте.
> Давно ничего не писал, и немного запамятовал. Как вернуть
> например строковое или числовое значение при выходе из программы.
>  Например в программе есть меню, при выходе из программы
> нужно чтобы она возвращала имя выбранного пункта меню или
> его индекс. Зачем это надо. Далее это значение будет присвоено
> переменной в BAT файле и каким-то образом обработано.
>

В "BAT файл " возможно вернуть значение ErrorLevel. Имхо


 
voyager ©   (2009-09-04 03:59) [2]

Почему только ErrorLevel?

Что мешает сделать так...
Завести в программе переменную среду окружения MyMenu, в которую
сохранить имя выбранного пункта меню, а потом в BAT файле выполнить команду

set MyMenu
program.exe
if %MyMenu%==MenuItem1 (echo %MyMenu%) else (echo error)


 
Юрий Зотов ©   (2009-09-04 04:16) [3]

Halt(код_возврата)


 
Leonid Troyanovsky ©   (2009-09-04 08:32) [4]


> voyager ©   (04.09.09 02:56)  

> его индекс. Зачем это надо. Далее это значение будет присвоено
> переменной в BAT файле и каким-то образом обработано.

Сформируй еще один батфайл:

set x="Your value 1"
set y="Your value 2"

Вызов его из первого путем call сделает нужные  присвоения.

--
Regards, LVT.


 
Наиль ©   (2009-09-04 08:36) [5]


> Юрий Зотов ©   (04.09.09 04:16) [3]

Halt - это слишком грубо, лучше задавать значение глобальной переменной ExitCode.

Пример №1:
Программа
begin
 ExitCode:=1;
end.


Bat-файл
program.exe
if +%ErrorLevel%==+1 echo Good


Пример №2:
begin
 Writeln("Is Bad string");
end.

Bat-файл
@echo off
program.exe >tmp.txt
set /p Str="Вопрос к пользователю, на который ответит наша программа" <tmp.txt
del tmp.txt
echo До обработки: %str%
echo После обработки: %Str:Bad=Good%


file:///%SystemRoot%\Help\ntcmds.chm
http://www.osp.ru/win2000/2006/08/3938655/


 
Leonid Troyanovsky ©   (2009-09-04 08:50) [6]


> voyager ©   (04.09.09 03:59) [2]

> Что мешает сделать так...
> Завести в программе переменную среду окружения MyMenu, в
> которую
> сохранить имя выбранного пункта меню, а потом в BAT файле

Переменную окружения можно установить дочернему процессу,
т.е., cmd.exe может определить окружение для стартуемого
приложения, но не наооборот.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2009-09-04 10:02) [7]

> Наиль  (04.09.2009 08:36:05)  [5]

> Halt - это слишком грубо

Halt для консоли это не грубо.


 
voyager ©   (2009-09-04 10:27) [8]

Всем спасибо.
Решил не заморачиваться с переменными окружения, а просто каждому MenuItem присвоить свое уникальное значение Tag, его и возвращать через ExitCode. BAT-файл в этом случае примерно такой...

@echo off
envvar.exe
if errorlevel 2222 goto :2222
if errorlevel 1111 goto :1111
goto :END

:1111
echo "exit code 1111"
goto :END

:2222
echo "exit code 2222"
goto :END

:END


 
Наиль ©   (2009-09-04 12:13) [9]

В конце каждого bat файла стоит не явный :EOF
Поэтому можно писать goto :EOF вместо goto :END, тогда метку в конце файла ставить уже не нужно.
Т.е. goto :EOF эвивалент делфийского Exit.


 
Anatoly Podgoretsky ©   (2009-09-04 12:29) [10]

> Наиль  (04.09.2009 12:13:09)  [9]

В бат файле есть оператор EXIT совсем не обязательно писать GOTO :EOF



Страницы: 1 вся ветка

Текущий архив: 2011.04.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.014 c
15-1291411633
Nic
2010-12-04 00:27
2011.04.10
Недорогой телефон с сенсорным экраном


1-1251366984
_REA
2009-08-27 13:56
2011.04.10
Пустая строка в файле ресурсов


15-1292954454
TUser
2010-12-21 21:00
2011.04.10
Помидор - это овощ или фрукт?


2-1294752413
начинающий1993
2011-01-11 16:26
2011.04.10
вызвать B из A


15-1293264185
boriskb
2010-12-25 11:03
2011.04.10
А вы учитываете что: