Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Snimanje/citanje podataka na disk

[es] :: .NET :: WPF Programiranje :: Snimanje/citanje podataka na disk

[ Pregleda: 3449 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bsod17

Član broj: 331246
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Snimanje/citanje podataka na disk16.11.2015. u 12:33 - pre 101 meseci
Pravim nemacko/srpski recnik u WPF-u. Korisnik unese rec u jednom textboxu i u drugom upise prevod, prikazuju se vec unete reci, mogu da se izbrisu/izmene, nije moguce uneti duplikat, itd. Trenutno mislim da mi je najbolje/najjednostavnije da koristim SortedDictionary<string, string> za sam recnik. Kada se pokrene aplikacija ona treba da ucita fajl (recnik) i kad se reci unose/brisu/menjaju to se update-uje u samom fajlu, recimo tek kad kliknem na Save dugme.
Pretpostavljam da bi ovako nesto trebalo da mi bude ocigledno, da nisam pocetnik, ali trenutno ne znam uopste na koji nacin da "snimim/sacuvam" recnik u memoriji/na disku, u kom formatu, koji fajl ce to biti. Ono sto sam do sada nasao je da bih trebao da uradim XML serialization i dictionary da pretvorim u xml fajl koji cu sacuvati negde na disku i koji ce se ucitati svaki put kada se pokrene aplikacija, a onda raditi deserialization nazad u SortedDictionary da bi aplikacija mogla da radi. Do sada nisam radio serialization i trenutno ucim upravo to, ali nisam siguran da li je to nacin na koji ovako nesto treba da se uradi. Jedino sto sam "snimao" na disk do sada su bili obicni .txt fajlovi, ali u ovom slucaju bi tako nesto bilo veoma losa opcija. Pretpostavljam da bih mogao da koristim neki database, ali bi to verovatno bio overkill jer imam samo rec i prevod. Bio bih zahvalan na bilo kakvoj pomoci u vezi sa ovim. Hvala
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: Snimanje/citanje podataka na disk16.11.2015. u 14:06 - pre 101 meseci
Ako imas samo rec i prevod, najjednostavniji nacin (a ti proceni da li ti odgovara) je da koristis obican tekstualni fajl (nebitno da li je ekstenzija .txt ili ne) u kojem ces odvajati rec i prevod nekim karakterom koji odlucis da neces imati u okviru reci ili prevoda. Npr:
rec1|prevod1
rec2|prevod2

Onda mozes upotrebiti postojece znanje za rad sa tekstualnim fajlovima + ce ti raditi brze i fajl ce biti manji.
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-7.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: Snimanje/citanje podataka na disk16.11.2015. u 18:27 - pre 101 meseci
Apsolutno se slažem sa ovim što je rekao Shadowed, ali ako baš budeš hteo da koristiš serijalizaciju/deserijalizaciju, šaljem ti parče koda:
Code:
private void Deserialize()
        {
            try
            {
                using (Stream stream = File.Open(AppDomain.CurrentDomain.BaseDirectory + "BasicData.dat", FileMode.Open))
                {
                    BinaryFormatter bin = new BinaryFormatter();

                    fileData = (SortedDictionary<string, string>)bin.Deserialize(stream);
                }
            }
            catch (IOException ioex)
            {
                MessageBox.Show(ioex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private void Serialize()
        {
            try
            {
                using (Stream stream = File.Open(AppDomain.CurrentDomain.BaseDirectory + "BasicData.dat", FileMode.Create))
                {
                    BinaryFormatter bin = new BinaryFormatter();
                    bin.Serialize(stream, fileData);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

"BasicData.dat" je fajl u koji se snimaju podaci i koji se nalazi u istom direktorijumu gde se nalazi i glavni exe fajl Možeš da izmeniš naziv ovog fajla.
"fileData" je tvoj SortedDictionary. On bi trebao da bude deklarisan u klasi tako da bude vidljiv iz svih metoda klase.
Kada budeš želeo da snimiš izmene, pozovi metodu "Serialize()" a kada budeš hteo da iščitaš podatke iz fajla pozovi "Deserialize()".
 
Odgovor na temu

bsod17

Član broj: 331246
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Re: Snimanje/citanje podataka na disk18.11.2015. u 12:35 - pre 101 meseci
Hvala na pomoci. Tek dan i po kasnije videh da imam odgovore na pitanje :D. Vec sam se igrao malo sa xml serijalizacijom kad sam postavio pitanje, a onda sam nakon toga radio na izgledu aplikacije. Koristicu verovatno i xml i binary serijalizaciju, kao i neki db, cisto radi vezbe. Verovatno jeste najjednostavnije samo obican tekstualni fajl da napravim, u formatu rec|prevod, pa onda to da iscitavam svaki put kad se ukljuci aplikacija, ali to racunam i nije neka razlika u odnosu na xml serijalizaciju, osim sto bi mozda brze radilo "deserijalizaciju" (mada ne znam dok ne uporedim). A posto mi je glavni cilj ovog projekta da vezbam sve sto sam naucio onda hocu malo da zakomplikujem xd
 
Odgovor na temu

dusans
Stojanov Dušan
Pančevo

Član broj: 9551
Poruke: 1343
*.dynamic.sbb.rs.



+311 Profil

icon Re: Snimanje/citanje podataka na disk18.11.2015. u 13:48 - pre 101 meseci
Koristi Xml serijalizaciju za podatke, Binary je mnogo kruta i koristi deep serializaciju
i nećeš moći da učitaš podatke ako kasnije promeniš strukturu klase.

 
Odgovor na temu

bsod17

Član broj: 331246
Poruke: 20
*.dynamic.sbb.rs.



Profil

icon Re: Snimanje/citanje podataka na disk18.11.2015. u 15:20 - pre 101 meseci
Mislio sam da koristim wrapper klasu sa 2 public property-ja, public string Word i public string Translation za key i value SortedDictionary-ja. Procitacu malo vise o razlikama binary i xml serijalizacije. Mislio sam da mi je manje-vise svejedno u ovom slucaju koju cu da koristim.
 
Odgovor na temu

[es] :: .NET :: WPF Programiranje :: Snimanje/citanje podataka na disk

[ Pregleda: 3449 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.