IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jak vytvořit žebříček pro ukládání hodnot v textovém dokumentu?

Aktivity
Avatar
David Mrázek:27.5.2021 11:33

Ahoj, tvořím WPF aplikaci, která je na bázi počítání matematických úloh. Ve zkratce jde o to, že si uživatel zvolí jakou chce operaci a jakou obtížnost a následně počítá. Na konci hry(hráč sám ukončí nebo dojdou životy) ukáže messagebox text s časem a následně bych byl rád, kdyby se čas uložil do textového souboru.

Zkusil jsem:

 readonly string path = @"C:\Users\info\Desktop\žebříček.txt";
private void zapisText(string strCesta, TimeSpan tsTrvani)
        {
            StreamWriter str = new StreamWriter(strCesta, true);
            str.WriteLine(tsTrvani/suma);
            seradit(strCesta);
            str.Close();
        }
private void seradit(string strCesta)
        {
            string[] radek = File.ReadAllLines(strCesta);
            Func<string, int> raditPodle = line => int.Parse(line.Substring(0, 13));
            var serazeniRadku = radek.Skip(1)
                                  .Take(radek.Length - 2)
                                  .OrderBy(raditPodle)
                                  .ToArray();
            StreamWriter writer = new StreamWriter(strCesta);
            writer.WriteLine(serazeniRadku);
        }

Chci docílit: Čas bych rád zapisoval v milisekundách, tak že celkový čas se vydělí celkovou sumou příkladů. Vše fungovalo dobře zapisovalo se to do textového souboru jak mělo, ale pak jsem se pokusil řádky zarovnat podle hodnot času a již to nejde.

Nemá někdo radu?

Děkuji

Odpovědět
27.5.2021 11:33
kde je vůle, tam je cesta
Avatar
JerryM
Člen
Avatar
JerryM:5.6.2021 19:37

a co konkrétně ti nejde ??
writer.WriteLi­ne(serazeniRad­ku); tim zapisuješ jeden řádek ne ?
ty potřebuješ zapsat všechny prvky pole radek pomocí cyklu a každý pomocí příkazu
writer.WriteLi­ne(serazeniRad­ku[]); kde to pole už bude seřazený ne ?
já teda nechápu co dělá příkaz

var serazeniRadku = radek.Skip(1)
.Take(radek.Length - 2)
.OrderBy(radit­Podle)
.ToArray();
ale to je fuk ..

hele a proč neprogramuješ normálně ? proč používáš ty hrozný tečkový notace a lambda výrazy
když seš začátečník a neumíš to

 
Nahoru Odpovědět
5.6.2021 19:37
Avatar
David Flieger:6.6.2021 8:12

Nejsem si jist, ale mám pocit, že za to bude moci to, že se při seřazování výsledků snažíš otevřít otevřený soubor.
Podle mě by bylo lepší ty výsledky nejdřív načíst do seznamu, zavřít čtení, ten nový výsledek vložit Insert sortem a teprve pak ukládat.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
6.6.2021 8:12
Avatar
Odpovídá na David Flieger
David Mrázek:8.6.2021 7:34

máš pravdu bylo to otevřením otevřeného souboru díky :)

Nahoru Odpovědět
8.6.2021 7:34
kde je vůle, tam je cesta
Avatar
Odpovídá na JerryM
David Mrázek:8.6.2021 8:23

popravdě jsem to našel na stackoverflow ale vůbec nijak mi to nepomohlo...

Nahoru Odpovědět
8.6.2021 8:23
kde je vůle, tam je cesta
Avatar
David Mrázek:8.6.2021 9:07

Stále jsem na tom jak časy ukládat ale ne seřazeně jen prostě postupně podle uživatelů jak po sobě aplikaci používají :

private void zapisText(string strCesta, TimeSpan tsTrvani)
        {
            using (StreamWriter str = new StreamWriter(strCesta, true))
            {
                str.WriteLine(tsTrvani / suma);//trvaní=čas příkladů, suma= počet příkladů
            }
        }
TimeSpan trvani = TimeSpan.FromMilliseconds(mt.ElapsedMilliseconds);//z jiné metody
readonly string path = @"C:\Users\info\Desktop\žebříček.txt";
Nahoru Odpovědět
8.6.2021 9:07
kde je vůle, tam je cesta
Avatar
JerryM
Člen
Avatar
JerryM:8.6.2021 10:41

přiznám se že týhle větě vubec nerozumim... to je v češtině ???

"Stále jsem na tom jak časy ukládat ale ne seřazeně jen prostě postupně podle uživatelů jak po sobě aplikaci používají :" ???

 
Nahoru Odpovědět
8.6.2021 10:41
Avatar
JerryM
Člen
Avatar
JerryM:8.6.2021 10:47

a nemělo by to bejt zapsaný trochu jinak ???

StreamWriter str = null;
string line_01 = "";

try
{
   str = new StreamWriter(strCesta, true));

   R1 = tsTrvani / suma;
   line_01 = Convert.ToString( R1 )
   str.WriteLine( line_01 ); //trvaní=čas příkladů, suma= počet příkladů

}
catch (Exception err)
{
   // obsluha chyby
}
finally
{
   str.Close();
   str = null;
}

a proč proužíváš using když ho neumíš používat ?

 
Nahoru Odpovědět
8.6.2021 10:47
Avatar
Odpovídá na JerryM
David Mrázek:8.6.2021 10:54

ty jsi mi nějaká netykavka :D jasně že v češtině, omlouvám se za nepoužití čárek

Nahoru Odpovědět
8.6.2021 10:54
kde je vůle, tam je cesta
Avatar
Odpovídá na JerryM
David Mrázek:8.6.2021 10:55

je to funkční tak jak to mám zapsané, tak proč zapsané jinak
using mi bylo doporučeno ať použiji, že to zajistí čistý průběh

Nahoru Odpovědět
8.6.2021 10:55
kde je vůle, tam je cesta
Avatar
David Mrázek:8.6.2021 11:40

děkuji za odpovědi už jsem to vyřešil

Nahoru Odpovědět
8.6.2021 11:40
kde je vůle, tam je cesta
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 11 zpráv z 11.