

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()
Melo by stacit nastavit ExitCode:
Environment.ExitCode = 8; (8 je priklad)
V davce se pak testuje standardni promenna ErrorLevel
Jak nastavit proměnné prostředí:
http://stackoverflow.com/questions/18624213/settin g-an-environment-variable-with-visual-basic-2010
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.
Aplikace nemoze vracat string. Zabudni na to.
String vypis na standardny vystup, a ked niekto spusti aplikaciu tak si ju spusti ako aplikacia >subor a potom si precita ten subor apod.
(alebo rovno v aplikacii vyrtvor nejaky subor, filename sa zada ako parameter z prik.riadku, ak sa nezada nic tak nevytvaras subor)
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.
Skus pripadne este toto
https://msdn.microsoft.com/en-us/library/96xafkes. aspx
aj s tym targetom (co tam ale mas dat sa ma neytaj hladaj si v MSDN :)
Jo. Ten target tam mám. Musí být EnvironmentVariableTarget.User nebo Machine. Jinak to provádí jen v rámci procesu (default je EnvironmentVariableTarget.Process).
Reťazec (jednoriadkový) môžeš prečítať zo štandardného výstupu napr. takto:
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ť.
znamenám si, to se může hodit.