Diskuze: Open / Save souboru - >> SAVE HRY

C# .NET .NET (C# a Visual Basic) Open / Save souboru - >> SAVE HRY American English version English version

Aktivity (1)
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 13:16

Ahoj chtěl bych se zeptat.
Chtěl bych uložit proměnné do souboru z nějaké hry a uložit kamkoliv na disk. A potom otevřít. Ale nevím jak udělat to abych je mohl uložit kam potřebuju...
Jde mi otevření souboru ale při uložení se mi nic neuloží do souboru a tak žádám radu..
A nevím jak do toho souboru uložit proměnné a ty pak načíst na zpět. Zkoušel jsem se dívat na Youtube ale zatím jsem nenašel nic co by fugovalo a už to řeším týden a zatím jsem to nevyřešil tak jsem si řekl jestli mi nemůžete pomoc.
Stačí mi odkaz někam na YOUTUBE nebo jinam. Nebo nějaká rada.
Děkuju a snad vás neotravuju....

Odpovědět 1.4.2013 13:16
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Veganekk
Vojtěch Pospíchal:1.4.2013 13:22

Tady na Devbooku je návod na uložení vlastního typu souboru mrkni tam třeba ti to pomůže.

 
Nahoru Odpovědět 1.4.2013 13:22
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Veganekk
Petr Nymsa:1.4.2013 13:23

Vezmem si to popřádku.

  1. Chceš otveřít OpenDialog ? -> tedy to okno Uložit jako a uživatel si určí kam uložit ?

2)nebo (a to předpokládám) prostě si hra uloží data

Nejdříve te odkážu sem -> http://www.itnetwork.cz/csharp/zaklady - základy C#

A potom už sem http://www.itnetwork.cz/csharp/soubory -> práce se soubory

Potom akorát uložíš do textového soubrou všechny potřebná data hry (např. životy, peníze, skore, jméno hráče,...). Můžeš si vybrat i určitý formát
CSV se hodí pro jednoduchou strukturu savu her
XML se hodí pro složitější ukládání - například uložení inventáře apod.
....

Když si nebudeš vědet rady napiš a my rádi poradíme :). Pozor,jediné co neuděláme je, že to napíšeme za tebe. Napiš dotaz, ukaž kus kódu a my tě navedem ke správnému řešení.

Nahoru Odpovědět 1.4.2013 13:23
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 13:26

JJ děkuju :) .Proto jsem psal jestli mě můžete někam odkázat xD. Takže děkuju. Hned se an to vrhnu a uvidíme jestli to tentokrát pujde :)

Nahoru Odpovědět 1.4.2013 13:26
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 13:26

JJ děkuju :) .Proto jsem psal jestli mě můžete někam odkázat xD. Takže děkuju. Hned se an to vrhnu a uvidíme jestli to tentokrát pujde :)

Nahoru Odpovědět 1.4.2013 13:26
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Veganekk
Petr Nymsa:1.4.2013 13:30

Pokud neovládáš ani základy, doporučuju si projet celý seriál základů C# a potom se vrhnout na soubory ;)

Nahoru Odpovědět 1.4.2013 13:30
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 13:45

Tak ukladat a cist ze souboru umim ale cestu mam uz nastavenou napevno. A cist a ukladani umim do TXT a do nej ukladam slova a tak a zkousel jsem to sam... ale neslo mi ukladani... Tak jsem se po tydnu utrap rozhodl napsat jsem. .)
Jinak se neboj :D blbej nejsem ale vzdy se mi neco pokazi ... minule se to vyresilo prepsanim programiu do noveho...
Je to komplikovany :) ale co dnes neni xD

Nahoru Odpovědět 1.4.2013 13:45
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 13:49
  • Lenost dela sve :D... Vím že jsem si to mohl vyhledat sam :P ,ale abych se priznal byl jsem trosku vic linej :D tak jsme napsal a doufal ze mi nejaka dobra duse odpovi a najde za me xD.... Ale jinak dekuju :) uz to funguj takze

ARIGATO (děkuji)

Nahoru Odpovědět 1.4.2013 13:49
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Veganekk
Зайчик:1.4.2013 13:50

Použij XML elegantní řešení i když to pekelně zhnusí zdroják tak se to ukládá a načítá jedna báseň. TXT je pro blbečky tam to neukládej, nejlepší řešení je APPDATA. Tu je kousek z mýho kódu co jsem psal nedávno ( nejspíš to půjde i lépe co já vím o XML jsem se moc blíž nezajímal. Každopádně to dělá to co má tak snad si z toho něco vemeš.

/// <summary>
/// Metoda, která slouží pro uložení dat do *.XML souboru
/// v AppData. Ukládá servery a nastavení aplikace.
/// </summary>
public void SaveData()
{
    XmlWriterSettings sett = new XmlWriterSettings();
    sett.Indent = true;
    using (XmlWriter xw = XmlWriter.Create(this.path, sett))
    {
        xw.WriteStartDocument();
        xw.WriteStartElement("Servers");
        foreach (string dat in this.serverData)
            xw.WriteElementString("Server", dat);
        xw.WriteStartElement("Settings");
        xw.WriteElementString("info", mainform.getSettings());
        xw.WriteEndElement();
        xw.WriteEndElement();
        xw.WriteEndDocument();
        xw.Flush();
    }
}
/// <summary>
/// Metoda, která načte *.XML soubor z AppData,
/// zpracuje ho a uloží hodnoty. Hodnoty jsou
/// servery a nastavení aplikace.
/// </summary>
public void loadData()
{
    if (File.Exists(this.path))
    {
        using (XmlReader xr = XmlReader.Create(this.path))
        {
            while (xr.Read())
            {
                if (xr.NodeType == XmlNodeType.Element)
                    element = xr.Name;
                else if (xr.NodeType == XmlNodeType.Text && element == "Server")
                    this.serverData.Add(xr.Value);
                else if (xr.NodeType == XmlNodeType.Text && element == "info")
                    mainform.setSettings(xr.Value);
                else if ((xr.NodeType == XmlNodeType.EndElement) && (xr.Name == "Servers"))
                    Console.WriteLine("exit");
            }
        }
    }

Nejsou tam parametry protože path a jiný blbosti si bez hned z konstruktoru třídy.

Nahoru Odpovědět 1.4.2013 13:50
Коммунизм для нашего будущего!
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 13:56

Diky je to zajímavý kod :). Vubec jsem nemel tuseni jak jde do APPDATA ukladat
Dekuju :)

Nahoru Odpovědět 1.4.2013 13:56
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Odpovídá na Зайчик
Luboš Satik Běhounek:1.4.2013 14:00

Xml bych zrovna na uložení pozice ve hře nepoužil, může si to pak kdokoliv lehce nacheatovat, tenhle typ dat bych radši ukládal binárně, ideálně to třeba ještě prohnal přes DeflateStream (komprese), aby případný cheater nic nepřečetl :) .

Nahoru Odpovědět 1.4.2013 14:00
:)
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 14:02

uvidi se :) zatí to necham jak to je . treba casem :))

Nahoru Odpovědět 1.4.2013 14:02
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Odpovídá na Luboš Satik Běhounek
Lukáš Hruda (Luckin):1.4.2013 14:05

Já si vždycky na tohle vymyslím nějakou vlastní jednoduchou šifru :D ...pak to prostě uložim jako text do souboru bez koncovky.

 
Nahoru Odpovědět 1.4.2013 14:05
Avatar
Зайчик
Člen
Avatar
Odpovídá na Luboš Satik Běhounek
Зайчик:1.4.2013 14:09

Však v hlavním dotazu není napsané nic o souřadnicích třeba ukládá jen nastavení. Které je fuk že si někdo překódí. Myslím že není takový problém to ukládát v binárce i do XML i když to asi nebude nejštastnější, ale zas nemusí to být nejhorší protože toho může ukládat elegantně víc do jednoho souboru. Pozice v binární podobně a ještě klidně zašifrované a pod to nastavení celé aplikace. Já takhle ukládám jména a adresy serverů + nastavení aplikace. To nikomu nevadí že si to někdo upraví. Ale dobrá připomínka na souřadnice ten můj kód nebude ;)

Nahoru Odpovědět 1.4.2013 14:09
Коммунизм для нашего будущего!
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 14:18

No :D je to hra miny xD takže ukladám souradnice :D . A ty pak nacitam xD

Nahoru Odpovědět 1.4.2013 14:18
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Veganekk
Зайчик:1.4.2013 14:19

Pokud jen souřadnice a nic jiného tak XML asi ani nepoužij. ;) Ale tak aspoň pro příště až budeš ukládat něco jiného.

Nahoru Odpovědět 1.4.2013 14:19
Коммунизм для нашего будущего!
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 14:22

ukladam do toho CSV :D to je snad dobra volba ne :D? TXT nepouzivam tedka

Nahoru Odpovědět 1.4.2013 14:22
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Зайчик
David Čápka:1.4.2013 14:28

"TXT je pro blbečky, ukládej to do AppData" - Nějak mi uniká smysl této rady. TXT je přípona souboru, AppData je složka. Hlavně, že je opět použita vulgarita.

Nahoru Odpovědět 1.4.2013 14: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 Veganekk
Зайчик:1.4.2013 14:28

Ono je vcelku jedno v čem, důležitý je aby to bylo správně zašifrované.

Nahoru Odpovědět 1.4.2013 14:28
Коммунизм для нашего будущего!
Avatar
Зайчик
Člen
Avatar
Odpovídá na David Čápka
Зайчик:1.4.2013 14:32

Myslel jsem to tak že pokud ukládá nastavení aplikace tak použít TXT namísto XML je pěkná blbost. Pokud ukládá souřadnice tak TXT pro mě za mě. ;)

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

Tak textový soubor je i XML. Záleží jak je strukturovaný, pro jeho účely by se hodilo CSV, protože je jednoduché.

Nahoru Odpovědět 1.4.2013 14:34
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
Зайчик:1.4.2013 14:44

Souhlasím, jen abych to shrnul předtím jsem to nemyslel ve zlém, podle mě nejlepší řešení ukládání nastavení je do XML popřípadě do *.ini. Nevěděl jsem že se budou ukládat jen souřadnice. Potom to beru z5, jen jsem nechtěl aby hned ze začátku použil nevhodný formát nebo né nevhodný ale aby použil to lepší co mu C# nabízí a naučil se pracovat s tím.

Nahoru Odpovědět 1.4.2013 14:44
Коммунизм для нашего будущего!
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 14:47

ukladam to do CSV. zatím to jde uvidím při hlubším zkoumani :)
A jinak když jsme u toho jak funguje ten *.ini ? Jak se do nej uklada a co presne a k cemu je lepsi :) Snad moc neotravuji

Nahoru Odpovědět 1.4.2013 14:47
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Зайчик
Člen
Avatar
Odpovídá na Veganekk
Зайчик:1.4.2013 14:55

INI se používá na ukládání konfigurace aplikace, není tam ani žádná struktura to záleží na tobě, jak si to vytvoříš.

Nahoru Odpovědět 1.4.2013 14:55
Коммунизм для нашего будущего!
Avatar
Michal Maršálek:1.4.2013 14:57

Zdravím, do INI se ukládá vždy klíč=hodnota (tyto dvojce jsou odděleny novým řádkem). V praxi to znamená, že je jedno, v jakém pořadí jsou data uložena a soubor je taky lépe čitelný člověkem, který nezná strukturu souboru. Je to něco mezi CSV a XML.

 
Nahoru Odpovědět 1.4.2013 14:57
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Veganekk
David Čápka:1.4.2013 15:03

INI se v C# již nepoužívá, nahradilo ho XML.

Nahoru Odpovědět 1.4.2013 15:03
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
Michal Maršálek:1.4.2013 15:09

To tolik záleží na programovacím jazyku? Myslel jsem si, že spíše záleží na struktuře a typu dat, která se ukládají. Jak je to myšleno? To protože se dá xml snaze převést na objekty?

 
Nahoru Odpovědět 1.4.2013 15:09
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Maršálek
David Čápka:1.4.2013 15:19

INI a XML jsou konkurenční formáty. Řekl bych, že INI je staré a mrtvé, ale nekoho bych mohl pobouřit, proto řeknu, že XML umí to samé, co INI a jelikož je to univerzální formát, používá se XML. C# je jazyk navržený tak, aby používal balík knihoven .NET. A .NET podporuje jen XML a INI ne (což je logické, proč zbytečně spravovat 2 knihovny, které by uměly totéž, když mohou spravovat jednu univerzální na XML).

Editováno 1.4.2013 15:19
Nahoru Odpovědět 1.4.2013 15:19
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
Michal Maršálek:1.4.2013 15:49

Aha, ale nicméně když si napíši vlastní parsování a ukládání ini a použiji tento formát pro přiměřeně velké (malé) množství dat je to v pořádku? Přece jen mi přijde poněkud jednodušší než xml.

 
Nahoru Odpovědět 1.4.2013 15:49
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Maršálek
David Čápka:1.4.2013 16:00

Je to špatně, protože v C# se prostě používají XML knihovny z .NETu. Když si budeš to samé, co má standardně .NET, psát sám, je to pracné pro tebe a nepřehledné pro ostatní.

Nahoru Odpovědět 1.4.2013 16:00
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
Michal Maršálek:1.4.2013 16:30

Dobře, díky za objasnění. :)

 
Nahoru Odpovědět 1.4.2013 16:30
Avatar
Veganekk
Člen
Avatar
Veganekk:1.4.2013 17:23

Jen se chci zeptat. Vím že to není k tématu ale mám statusStrip a jak mam udělat aby pod něj objevovali tlačítka? Totiž překrývá mi část tlačítek horních a jde nějak udělat aby to nedělal? A bylo to pod ním

Nahoru Odpovědět 1.4.2013 17:23
Rád se učím novým věcem. A věci co nechápu rád pochopím a naučím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:2.4.2013 11:11

XML umí víc než INI. Umí ukládat hierarchická data a má definováno zpracování non-ASCII znaků. Také jsou definovány postupy zpracování různými virtuálními procesory. Stačí je jen použít.

Nahoru Odpovědět  +1 2.4.2013 11:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Luboš Satik Běhounek:8.4.2013 12:55

XML se hodí, pokud těch dat není moc a nevadí, že k nim má uživatel přístup, jinak je lepší ukládat binárně.

Kdysi si kamarád ukládal grafiku do nějaké hry hry v textové podobě - takže po otevření souboru na mě vybafla zhruba takováhle posloupnost znaků: "000255255000­255255" - z 3MB velkého BMP souboru se mu povedlo udělat 9 MB velký texťák :D

Nahoru Odpovědět  +1 8.4.2013 12:55
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Satik Běhounek
Kit:8.4.2013 13:20

Tenhle formát občas používám pro automatické konverze obrázků, ale nikde to neukládám. Posílám to rourou přímo do další aplikace.

Na multimédia se XML nehodí. Na vektorovou grafiku nebo zvuk ještě jo.

Nahoru Odpovědět 8.4.2013 13:20
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Satik Běhounek
Kit:8.4.2013 13:24

XML se hodí hlavně u dat, která chceme načíst do aplikace celá nebo alespoň jejich podstatnou část. V tom případě velikost souboru tolik nerozhoduje. Mám tady i pár XML >100 MB.

Nahoru Odpovědět 8.4.2013 13:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Odpovídá na Kit
Luboš Satik Běhounek:8.4.2013 13:41

Pokud ty XML > 100 MB nejsou jen textové informace, tak bych zauvažoval o vytáhnutí těch některých dat někam ven a odkazovat na ně třeba jen jménem souboru, ve kterém jsou uložena.

Nahoru Odpovědět 8.4.2013 13:41
:)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Luboš Satik Běhounek
Kit:8.4.2013 14:09

V mém případě to jsou jen textové informace, aplikace je vždy potřebuje všechny. XML je pro ně ideální. Kdyby nebylo, už dávno bych to předělal do databáze.

Nahoru Odpovědět 8.4.2013 14:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 38 zpráv z 38.