Avatar
Eldest
Redaktor
Avatar
Eldest:28.10.2012 19:37

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
Зайчик:28.10.2012 19:51

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:28.10.2012 19:52
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:28.10.2012 19:55

Ok, díky moc. :)

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

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
Зайчик:28.10.2012 20:00

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:28.10.2012 20:06

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:28.10.2012 20:08

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

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

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:28.10.2012 20:10
[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:28.10.2012 20:16

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
Зайчик:28.10.2012 20:17

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:28.10.2012 20:22

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:28.10.2012 20:23

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:28.10.2012 20:24

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
Зайчик:28.10.2012 20:24

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:28.10.2012 20:25

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
Зайчик:28.10.2012 20:26

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:28.10.2012 20:26

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:28.10.2012 20:28

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
Зайчик:28.10.2012 20:30

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:28.10.2012 20:45

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
Зайчик:28.10.2012 20:48

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:28.10.2012 20:53

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):28.10.2012 21:00

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:28.10.2012 21:20

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):28.10.2012 21:25

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
Odpovídá na Lukáš Hruda (Luckin)
David Čápka:29.10.2012 8:55

Jo, říká to interpreteru.

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.