Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Loki3d   (2010-02-05 17:38) [0]

есть программа

program Project1;
{$APPTYPE CONSOLE}
Uses
windows,SysUtils;
{$R *.RES}
begin
 ExitCode:=length(paramStr(1));
end.

она должна возвращать длинну строки.

Я использую программу в BAT файле

for /F "usebackq tokens=*" %%a in (Filename) do (
Project1.exe %%a
echo err-%ErrorLevel%
)

и получаю все время 0
если же в BAT файле я просто вызываю программу и передаю ей значение переменной

set aa=11111111111111
Project1.exe %aa%
echo err-%ErrorLevel%

то всё работает

может ктото сможет пояснить, почему так происходит?
может можно как то иначе получить результат работы программы для дальнейшего использования его в BAT скрипте?


 
MBo ©   (2010-02-05 17:42) [1]

проверил, что программа в первом случае действительно получает параметр?(выводом writeln, например)


 
Loki3d   (2010-02-05 17:47) [2]

да, получает 100%
и потом
в случае вызова проги в BAT вне "цикла" For
все же работает!


 
Ганя   (2010-02-05 19:28) [3]

следовательно, проблема не в программе


 
Loki3d   (2010-02-05 23:01) [4]

спасибо! капитан очевидность.


 
Демо ©   (2010-02-06 04:18) [5]


> и получаю все время 0


if errorlevel 5 ...
if errorlevel 4 ...
if errorlevel 3 ...
if errorlevel 2 ...
...


 
Демо ©   (2010-02-06 04:24) [6]

PS.

http://www.robvanderwoude.com/errorlevel.php


 
Дмитрий С ©   (2010-02-06 17:53) [7]

Delphi:
program GetLength;
{$APPTYPE CONSOLE}
uses
 Windows;

begin
 Writeln(Length(ParamStr(1)));
end.


BAT:

@echo off
setlocal ENABLEDELAYEDEXPANSION

for /F "usebackq tokens=*" %%a in (test.bat) do (

for /f "usebackq" %%x in (`GetLength.exe "%%a"`) do set ALength=%%x

echo Length of %%a is !ALength!

)

endlocal


Интересно, почему такая конструкция не прокатывает для установки переменной окружения из вывода:
echo testvalue|set /p testkey=


 
Дмитрий С ©   (2010-02-06 18:11) [8]

Для твоего варианта, кстати, прокатывает так:

@echo off
setlocal ENABLEDELAYEDEXPANSION

for /F "usebackq tokens=*" %%a in (test.bat) do (
GetLength.exe "%%a"
echo Length of %%a is !ErrorLevel!

)

endlocal


 
Loki3d   (2010-02-08 11:27) [9]

спасибо Дмитрий С
пожалуй так и сделаю, как ты предложил.. буду обрабатывать результат через Writeln раз иначе без шансов.



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

Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.058 c
15-1275368289
user123
2010-06-01 08:58
2010.08.27
Два интересующих меня вопроса о копировании и видеопотоке


15-1265662957
Kerk
2010-02-09 00:02
2010.08.27
Социальная реклама


2-1265912850
Делфиец
2010-02-11 21:27
2010.08.27
Сортировка в TADOQuery


3-1239881898
lp
2009-04-16 15:38
2010.08.27
Подскажите, пожалуйста, можно ли создать нового пользователя


2-1270733493
Виктор
2010-04-08 17:31
2010.08.27
DBGrid и DBEdit





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский