Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Návrat hodnoty z programu (Visual Basic)

Dobrý den
Občas si ve Visual Basic (2010 Express) píšu pro vlastní potřebu nějaké jednoduché jednoúčelové aplikace (Console Application). Potřebuji poradit, jak to udělat, aby mi takovýhle exáč vrátil nějakou hodnotu, kterou bych potom mohl dál jednoduše použít v běžné bat dávce. Něco jako: SET HODNOTA=mojeapp()

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Díky za odpovědi. Zkusil jsem si obojí. Environment.ExitCode funguje dobře. Bohužel prosté Integer…
TarasBulba 08.02.2016 11:36
TarasBulba
String vypis na standardny vystup, a ked niekto spusti aplikaciu tak si ju spusti ako aplikacia >sub…
MM.. 08.02.2016 11:50
MM..
Nakonec to teda asi obejdu "pěšky". V tom prográmku si vytvořím baťák s potřebným příkazem SET (set… nový
TarasBulba 08.02.2016 12:21
TarasBulba
Reťazec (jednoriadkový) môžeš prečítať zo štandardného výstupu napr. takto: for /f %%i in ('aplikac… nový
los 08.02.2016 19:13
los
for /f %%i in ('aplikacia.exe') do set premenna=%%i znamenám si, to se může hodit. poslední
lední brtník 08.02.2016 22:22
lední brtník

Díky za odpovědi. Zkusil jsem si obojí.

Environment.ExitCode funguje dobře. Bohužel prosté Integer číslo mi nestačí, já potřebuju předávat String.

Co se týče druhé možnosti - pomocí Environment.SetEnvironmentVariable, tak to samozřejmě funguje taky, dokonce pro String, JENŽE s jedním zádrhelem. Ta změna hodnoty v proměnné se projeví až po ukončení a spuštění další instance CMD. Není tedy k dispozici hned v dalším příkazu běžící dávky jako při použití příkazu SET. A to je dost velký problém. Strejda Google toho sice ohledně "refresh environment variables" nabídne dost, ale na fungující, použitelné řešení jsem nenarazil.

Nakonec to teda asi obejdu "pěšky". V tom prográmku si vytvořím baťák s potřebným příkazem SET (set promenna=hodnota), následně tu dávku zavolám a budu pokračovat. Další možnost by byla povést třeba přes plánovač prvně to nastavení a za chvilku zavolat jako druhou úlohu zbytek dávky, který už by se k té změněné hodnotě proměnné prostředí asi dostal. Jen jsem si myslel, že by to šlo udělat nějak jednodušeji, elegantněji.

Reťazec (jednoriadkový) môžeš prečítať zo štandardného výstupu napr. takto:

for /f %%i in ('aplikacia.exe') do set premenna=%%i
echo %premenna%

Alebo použi dočasný súbor (rozparsovať ho môžeš tiež cez for cyklus). Prenášať si to v premenných prostredia smerom z volaného programu do volajúceho je hlúposť.

Zpět do poradny Odpovědět na původní otázku Nahoru