Page 1 of 1

Ukládání score WP

Posted: Thu Nov 17, 2011 14:33
by Sandak
Ahoj, marně se snažím dohledat na netu jak co nejlépe a nejjednodušeji ukládat score a potom ho přečíst a zobrazit na displeji. Prozatím pomýšlím jen na offline score přímo v zařízení a pouze jméno a dosažený LVL. Stále se nemůžu dopátrat nějakého rozumného návodu, který by fungoval na WP... Předem díky zda má s tím někdo zkušenosti

snažím se použít něco jako následující kód:

Code: Select all

            IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();

            //Open existing file
            IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile("text.txt", FileMode.Open, FileAccess.Write);
            using (StreamWriter writer = new StreamWriter(fileStream))
            {
                string someTextData = "Some More TEXT Added:  !";
                writer.Write(someTextData);
                writer.Close();
            }

            IsolatedStorageFile myIsolatedStorage2 = IsolatedStorageFile.GetUserStoreForApplication();
            IsolatedStorageFileStream fileStream2 = myIsolatedStorage2.OpenFile("text.txt", FileMode.Open, FileAccess.Read);
            using (StreamReader reader = new StreamReader(fileStream2))
            {    //Visualize the text data in a TextBlock text
                this.text = reader.ReadLine();
            }
na emulátoru to funguje bez problemu.. a pokud to chci zkusit na mobilu pise to: Operation not permitted on IsolatedStorageFileStream.

Ukládání score WP

Posted: Thu Nov 17, 2011 17:43
by matoman
ulozit do isolated storage settings je asi najjednoduchsia cesta.

Ukládání score WP

Posted: Thu Nov 17, 2011 18:02
by Sandak
Ano o to se snažím, jak jsem vložil v mém prvním příspěvku. Bohužel na mobilu mi to nejde vyzkoušet přitom v emulatoru to jde bez problemu. Jak je to mozne?

Ukládání score WP

Posted: Thu Nov 17, 2011 18:15
by matoman
skorej som myslel toto: http://msdn.microsoft.com/en-us/library ... 95%29.aspx" onclick="window.open(this.href);return false;

A aku chybu ti pise ked to pustis na mobile?

Ukládání score WP

Posted: Thu Nov 17, 2011 18:20
by matoman
Sorry, pre oci nevidim :) tu chybu si tam pisal vyssie. Tak to potom netusim, mas dost miesta v mobile?

Ukládání score WP

Posted: Thu Nov 17, 2011 18:26
by Sandak
Jojo, mobil je úplně čistej nic na něm není..

Ukládání score WP

Posted: Thu Nov 17, 2011 18:27
by matoman
a subor vytvoreny mas, ked z neho citas?

Code: Select all

IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
 
//create new file
using (StreamWriter writeFile = new StreamWriter(new IsolatedStorageFileStream("myFile.txt", FileMode.Create, FileAccess.Write, myIsolatedStorage)))
{
    string someTextData = "This is some text data to be saved in a new text file in the IsolatedStorage!";
    writeFile.WriteLine(someTextData);
    writeFile.Close();
}

Ukládání score WP

Posted: Thu Nov 17, 2011 18:31
by Sandak
noo vytvořil jsem normálně text.txt a přidal do Content nastavil compile: none a copy newer .. jak řikám na emulátoru to funguje do mobilu to nenahraju

//: tak jsem to udělal jak píšeš vytvořil jsem to jak si napsal a uala funguje to.. ale co když nechci po každém spuštění vytvářet nový soubor? to by se mi přeci předchozí uložené score smazalo ne? funguje tam něco jako .OpenOrCreate

Ukládání score WP

Posted: Thu Nov 17, 2011 18:36
by matoman
no ked nastavis na content, tak sa to isolated storage nenahra a preto ta chyba (Mozno na emulatoru to funguje ale obecne nie), musis ho tam presunut (vid odkaz), alebo vytvorit az v aplikacii...

http://technodave.wordpress.com/2010/11 ... s-phone-7/" onclick="window.open(this.href);return false;

Ukládání score WP

Posted: Thu Nov 17, 2011 18:37
by matoman
Mozes urobit

Code: Select all

if fileexists create 

open

Ukládání score WP

Posted: Thu Nov 17, 2011 18:41
by Sandak
Jdu to vše vyzkoušet děkuju moc, konečně jsem se pohnul dál :-)

Ukládání score WP

Posted: Fri Nov 18, 2011 9:09
by Tomáš Slavíček
V tomhle případě bych se opravdu možná nezabýval ukládáním do souborů, ale využil bych takzvané IsolatedStorageSettings. To je kolekce klíč/hodnota, přistupuje se k ní jako k objektu typu Dictionary. Podle textového řetězce (klíče) se může uložit nějaká hodnota. Ta tam zůstane až do dalšího spuštění aplikace (jen pozor, když si v kódu té aplikace něco změníš a znovu si ji zkompiluješ, už to bude jiná aplikace - s jiným odděleným paměťovým prostorem, k původním hodnotám se nedostaneš).

Ukládání obsahu proměnné name (typu string), pod klíč username, by se tedy provádělo nějak takhle:

Code: Select all

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
string key = "username";
if (settings.Contains(key))
    settings[key] = name;
else
    settings.Add(key, name);
settings.Save();
A načítání zpět např. takhle:

Code: Select all

if (!settings.Contains(key))
    settings.Add(key, "vychozi");
name = (string)settings[key];
Do toho IsolatedStorageSettings by mělo jít uložit jakékoliv pole objektů (a pak ho z něj zpátky zase dostat), tj. můžeš zkusit např. něco takovéto:

Code: Select all

int[] values = new int[10];
values[0] = 123;
values[1] = 456;
settings.Add("rekordy", values);

int[] readValues = new int[10];
readValues = (int[])settings["rekordy"];