Diskuze: Open / Save souboru - >> SAVE HRY

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

Avatar
Veganekk
Člen
Avatar
Veganekk:

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:

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:

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:

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:

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:

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:

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:
  • 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
Зайчик:

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:

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
Odpovídá na Зайчик
Luboš Běhounek (Satik):

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:

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š Běhounek (Satik)
Lukáš Hruda (Luckin):

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š Běhounek (Satik)
Зайчик:

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:

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

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:

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:

"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
Зайчик:

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

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:

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

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:

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

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:

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:

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:

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:

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:

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:

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:

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

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

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:

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š Běhounek (Satik):

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š Běhounek (Satik)
Kit:

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š Běhounek (Satik)
Kit:

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
Odpovídá na Kit
Luboš Běhounek (Satik):

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š Běhounek (Satik)
Kit:

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.