![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возврат значения из программы
voyager © (2009-09-04 02:56:00)Здравствуйте.
Давно ничего не писал, и немного запамятовал. Как вернуть например строковое или числовое значение при выходе из программы. Например в программе есть меню, при выходе из программы нужно чтобы она возвращала имя выбранного пункта меню или его индекс. Зачем это надо. Далее это значение будет присвоено переменной в BAT файле и каким-то образом обработано.
Anatoly Podgoretsky (2009-09-04 12:29:00) [1]> Наиль (04.09.2009 12:13:09) [9]
В бат файле есть оператор EXIT совсем не обязательно писать GOTO :EOF
Наиль (2009-09-04 12:13:00) [2]В конце каждого bat файла стоит не явный :EOF
Поэтому можно писатьgoto :EOFвместоgoto :END, тогда метку в конце файла ставить уже не нужно.
Т.е.goto :EOFэвивалент делфийскогоExit.
voyager (2009-09-04 10:27:00) [3]Всем спасибо.
Решил не заморачиваться с переменными окружения, а просто каждому 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
Anatoly Podgoretsky (2009-09-04 10:02:00) [4]> Наиль (04.09.2009 08:36:05) [5]
> Halt - это слишком грубо
Halt для консоли это не грубо.
Leonid Troyanovsky (2009-09-04 08:50:00) [5]
> voyager © (04.09.09 03:59) [2]
> Что мешает сделать так...
> Завести в программе переменную среду окружения MyMenu, в
> которую
> сохранить имя выбранного пункта меню, а потом в BAT файле
Переменную окружения можно установить дочернему процессу,
т.е., cmd.exe может определить окружение для стартуемого
приложения, но не наооборот.
--
Regards, LVT.
Наиль (2009-09-04 08:36:00) [6]
> Юрий Зотов © (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:32:00) [7]
> voyager © (04.09.09 02:56)
> его индекс. Зачем это надо. Далее это значение будет присвоено
> переменной в BAT файле и каким-то образом обработано.
Сформируй еще один батфайл:
set x="Your value 1"
set y="Your value 2"
Вызов его из первого путем call сделает нужные присвоения.
--
Regards, LVT.
Юрий Зотов (2009-09-04 04:16:00) [8]Halt(код_возврата)
voyager (2009-09-04 03:59:00) [9]Почему только ErrorLevel?
Что мешает сделать так...
Завести в программе переменную среду окружения MyMenu, в которую
сохранить имя выбранного пункта меню, а потом в BAT файле выполнить команду
set MyMenu
program.exe
if %MyMenu%==MenuItem1 (echo %MyMenu%) else (echo error)
Германн (2009-09-04 03:18:00) [10]
> voyager © (04.09.09 02:56)
>
> Здравствуйте.
> Давно ничего не писал, и немного запамятовал. Как вернуть
> например строковое или числовое значение при выходе из программы.
> Например в программе есть меню, при выходе из программы
> нужно чтобы она возвращала имя выбранного пункта меню или
> его индекс. Зачем это надо. Далее это значение будет присвоено
> переменной в BAT файле и каким-то образом обработано.
>
В "BAT файл " возможно вернуть значение ErrorLevel. Имхо