Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1294760444
polyaev
2011-01-11 18:40
2011.04.10
Прошу помощи в задании


2-1289225632
RWolf
2010-11-08 17:13
2011.04.10
Масштабирование иконок в TToolbar при смене DPI


2-1294602867
mefodiy
2011-01-09 22:54
2011.04.10
Ошибка при использовании TRxMemoryData


15-1293132611
DVM
2010-12-23 22:30
2011.04.10
Консольное приложение и UAC


15-1293012299
TUser
2010-12-22 13:04
2011.04.10
Итак, военные хакеры вероятного противника ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский