Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возврат значения из программы


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. Имхо


Наверх

Титульная страница Поиск, карта сайта Написать письмо