Форум: "Основная";
Текущий архив: 2011.04.10;
Скачать: [xml.tar.bz2];
ВнизВозврат значения из программы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c