Diskuze: Console

C# .NET .NET (C# a Visual Basic) Console American English version English version

Avatar
Eldest
Redaktor
Avatar
Eldest:

Ahoj, chtěl bych se zeptat, zda lze z „formulářové aplikace Windows“ nějak otevřít okno „consololové aplikace“? Např. kliknu na button a otevře se mi „consolová aplikace“.:)

 
Odpovědět 28.10.2012 19:37
Avatar
Зайчик
Člen
Avatar
Зайчик:

A máš tu aplikaci vytvořenou? Pak stačí jen připojit

using System.Diagnostics;

a pak už jen na click buttonu

Process.Start(cestaksouboru);
Nahoru Odpovědět 28.10.2012 19:51
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Eldest
matesax:
Process commandProcess = new Process();
commandProcess.StartInfo.FileName = "cmd";
commandProcess.Start();

Nebo:

Process commandProcess = Process.Start("cmd");
Editováno 28.10.2012 19:56
 
Nahoru Odpovědět 28.10.2012 19:52
Avatar
Eldest
Redaktor
Avatar
Eldest:

Ok, díky moc. :)

 
Nahoru Odpovědět 28.10.2012 19:55
Avatar
Eldest
Redaktor
Avatar
Eldest:

No já bych to právě chtěl, abych s tou consolovou aplikací mohl pracovat. Například do textboxu zadám nějaký text -> kliknu na button -> console s tím textem něco provede a vypíše ho. Jako vím, že takto to vyzní jako hloupost….to je jen příklad.

 
Nahoru Odpovědět 28.10.2012 19:57
Avatar
Зайчик
Člen
Avatar
Odpovídá na Eldest
Зайчик:

No tak ten text ulož do soboru, zapni aplikaci a ta ten soubor bude aktualizovat / načítat a upraví ho ... uloží ho :D a tvoje aplikace ho zase načte :D ale to je hodně blbý příklad :D nebo tu udělej na způsob klient server :DD

Nahoru Odpovědět 28.10.2012 20:00
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Eldest
David Čápka:

Není jednoduší si udělat formulář, kde bude textbox nebo jak se ta kontrolka jmenuje s černým pozadím? Stejně to nikdo nepozná, když tomu dáš stejný font.

Nahoru Odpovědět 28.10.2012 20:06
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Eldest
Redaktor
Avatar
Odpovídá na David Čápka
Eldest:

:D Rozumím, to je asi nejjednodušší řešení...

 
Nahoru Odpovědět 28.10.2012 20:08
Avatar
Eldest
Redaktor
Avatar
Eldest:

Ještě mě napadal další dotaz :D Jak co nejjednodušeji vypsat obsah 2D pole ve Windows Form?

 
Nahoru Odpovědět 28.10.2012 20:10
Avatar
matesax
Redaktor
Avatar
Odpovídá na Eldest
matesax:
[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();

[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();

private void button1_Click(object sender, RoutedEventArgs e)
{
    AllocConsole(); //start
    Console.WriteLine(":)");
    FreeConsole(); //ukončení
}

Jak vypsat 2D pole?

Editováno 28.10.2012 20:13
 
Nahoru Odpovědět 28.10.2012 20:10
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Eldest
David Čápka:

Můžeš ho vypsat do labelu nebo položky z něj nasypat do listboxu, záleží, jak to má vypadat, můžeš malovat i jablíčka do pictureboxu :D

Nahoru Odpovědět 28.10.2012 20:16
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Odpovídá na matesax
Зайчик:

Chci se zeptat co to přesně má dělat? ten kód co jsi napsal..?
// asi myslí dvurozměrné pole
Alloc pokud vím je zajištění paměti, na co zajišťovat paměť pro konzolovou aplikaci? Zvlášť v tomto případě ( nejspíš se pletu usuzuju podle Céčka )

Editováno 28.10.2012 20:18
Nahoru Odpovědět 28.10.2012 20:17
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Зайчик
matesax:

Je to tam popsané - start a konec... // samozřejmě, že to není tak úplně pravda

foreach (int i in new int[,] { { 2, 3 } })
    MessageBox.Show(i + "");
Editováno 28.10.2012 20:23
 
Nahoru Odpovědět 28.10.2012 20:22
Avatar
Eldest
Redaktor
Avatar
Eldest:

No pouze ve Windows Form vypsat 2D pole. Nejjednodušší je to asi vypsat v Consoli, proto jsem se ptal, jestli to jde nějak propojit. Byla to jen taková teoretická otázka. Jinak ten program kromě toho nic dělat nemá.

 
Nahoru Odpovědět 28.10.2012 20:23
Avatar
Eldest
Redaktor
Avatar
Odpovídá na Eldest
Eldest:

V consoli je to jednodušší hlavně na zápis. (míň řádků)

 
Nahoru Odpovědět 28.10.2012 20:24
Avatar
Зайчик
Člen
Avatar
Odpovídá na matesax
Зайчик:

Ne tam je akorát napsané

AllocConsole(); //zajištění paměti pro konzoli
Console.WriteLine(":)");
FreeConsole(); // uvolnění další paměti pro další věci
Nahoru Odpovědět 28.10.2012 20:24
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Зайчик
matesax:

Což je přesně ono... Tím tedy zapneš/vypneš konzoli...

 
Nahoru Odpovědět 28.10.2012 20:25
Avatar
Зайчик
Člen
Avatar
Odpovídá na matesax
Зайчик:

Hmm fascinující :D já bych allokaci paměti použil na něco užitečnějšího.

Nahoru Odpovědět 28.10.2012 20:26
Коммунизм для нашего будущего!
Avatar
matesax
Redaktor
Avatar
Odpovídá na Eldest
matesax:

Je to jako projíždět obrázek pixel po pixelu - ať bude mít jakýkoliv rozměr, bude to metodou pixel, po pixelu...

foreach (int i in new int[,] { { 2, 3 } })
    MessageBox.Show(i + "");

V konzoli je lehčí zápis?

Editováno 28.10.2012 20:27
 
Nahoru Odpovědět 28.10.2012 20:26
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:

V C# se nealokuje, tohle je nějaké kombo způsobené importem těch systémových knihoven, pokud to jde, tak se tomu vždy vyhýbám.

Nahoru Odpovědět 28.10.2012 20:28
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:

Hmm a jak se teda tvoří had nebo zásobník s dynamickou hodnotou? :o

Nahoru Odpovědět 28.10.2012 20:30
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:

C# má automatickou správu paměti, na pozadí tohle virtuální stroj samozřejmě dělá, ale ty se s tím nijak neinteraguješ. Had se tvoří tak, že si uděláš List a do něj přidáváš prvky. Nějakou paměť vůbec neřešíš, tak se už neprogramuje.

Nahoru Odpovědět 28.10.2012 20:45
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:

Já jen že v C jsem si vždy musel na takovýhle věci naallokovat nějakou tu paměť tak jsem zmaten o_O

Nahoru Odpovědět 28.10.2012 20:48
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:

V C# máš např.:

List<int> cisla = new List<int>();

cisla.Add(1);
cisla.Add(5);
cisla.Add(-2);
...

Nic víc neřešíš a řešit bys ani neměl, jazyky co nemají GC jsou zastaralé.

Nahoru Odpovědět 28.10.2012 20:53
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Lukáš Hruda (Luckin):

Já toho o C# moc nevim ale neni to náhodou tak že operátor new alokuje paměť a vrací referenci na ní. Garbage collector se přece nestará o alokaci paměti jenom o její dealokaci ne?

 
Nahoru Odpovědět 28.10.2012 21:00
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lukáš Hruda (Luckin)
David Čápka:

Nic nevrací přímou referenci do paměti, ta ve vyspělých jazycích neexistuje. New paměť alokuje pomocí VM a GC ji zas dealokuje, programátor to ale nevidí a pracuje s jinými referencemi, než jaké jsou v nižších jazycích.

Nahoru Odpovědět 28.10.2012 21:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Lukáš Hruda (Luckin):

Jistě ale tim operátorem říká programátor programu aby alokoval paměť, jenom k ní nemá přímej přístup. Lépe řečeno říká to kompilátoru a ten to pak řekne programu.

 
Nahoru Odpovědět 28.10.2012 21:25
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 29.10.2012 8:55
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 28 zpráv z 28.