Diskuze: Console
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 28 zpráv z 28.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Process commandProcess = new Process();
commandProcess.StartInfo.FileName = "cmd";
commandProcess.Start();
Nebo:
Process commandProcess = Process.Start("cmd");
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.
No tak ten text ulož do soboru, zapni aplikaci a ta ten soubor bude
aktualizovat / načítat a upraví ho ... uloží ho a tvoje aplikace ho zase načte
ale to je hodně blbý
příklad
nebo tu udělej
na způsob klient server
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.
[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?
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
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 )
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 + "");
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
Hmm fascinující já
bych allokaci paměti použil na něco užitečnějšího.
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?
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.
Hmm a jak se teda tvoří had nebo zásobník s dynamickou hodnotou?
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.
Já jen že v C jsem si vždy musel na takovýhle věci naallokovat nějakou
tu paměť tak jsem zmaten
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é.
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?
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.
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.
Zobrazeno 28 zpráv z 28.