powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Windows [игнор отключен] [закрыт для гостей] / Возврат значений из процедуры-метки после ENABLEDELAYEDEXPANSION (MS-DOS)
2 сообщений из 2, страница 1 из 1
Возврат значений из процедуры-метки после ENABLEDELAYEDEXPANSION (MS-DOS)
    #39903218
kopiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Может кто-нибудь знает, как обойти эту проблему (MS-DOS):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@echo off
set "global=1"
set "argument=1"
call:TestProc argument
echo Expected "[3] [3]", actual "[2] [2]":
echo "[%global%] [%argument%]"
goto:eof

:TestProc
 set "global=2"
 set "%~1=2"
 setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
   set "global=3"
   set "%~1=3"
 setlocal ENABLEEXTENSIONS DISABLEDELAYEDEXPANSION
 set "global=3"
 set "%~1=3"
goto:eof


После "setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION" в процедуре становится невозможно проинициализировать значение в вызывающем коде. Во всяком случае пока не понятно. Если есть информация, ЗС

Модератор: Тема перенесена из форума "Программирование".
...
Рейтинг: 0 / 0
Возврат значений из процедуры-метки после ENABLEDELAYEDEXPANSION (MS-DOS)
    #39903241
kopiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все разобрался, вызов "setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION" нужно делать снаружи, внутри не работает:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
@echo off
set "global1=1"
set "global2=1"
set "argument1=1"
set "argument2=1"
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call:TestProc argument1 argument2
setlocal DISABLEDELAYEDEXPANSION
echo Expected "[2] [2] [4] [4]", actual "[2] [2] [4] [4]":
echo "[%global1%] [%argument1%] [%global2%] [%argument2%]"
goto:eof

:TestProc
 set "global1=2"
 set "global2=2"
 set "%~1=2"
 set "%~2=2"
 echo "[%~1]"
 ( setlocal
    set "global1=3"
    set "%~1=3"
 )
 ( endlocal
  set "global2=4"
  set "%~2=4"
 )
goto:eof


Изначальную проблему это не закрывает, но этого варианта достаточно, спсб
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Windows [игнор отключен] [закрыт для гостей] / Возврат значений из процедуры-метки после ENABLEDELAYEDEXPANSION (MS-DOS)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]