Pomoc s kodom – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pomoc s kodom – .NET – Fórum – Programujte.comPomoc s kodom – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Anny
~ Anonymní uživatel
7 příspěvků
10. 6. 2012   #1
-
0
-

Ahojte. Dostala som za ulohu ulozit obrazok a neskor ho zase nacitat do DB. Na nete som nasla tutorial. Je tam kusok kodu, ktorym si nie som ista.

byte[] ReadImageToBytes(string sPath)
{
 //Initialize byte array with a null value initially.
 byte[] data = null;

 //Use FileInfo object to get file size.
 FileInfo fInfo = new FileInfo(sPath);
 long numBytes = fInfo.Length;

 //Open FileStream to read file
 FileStream fStream = new FileStream(sPath, FileMode.Open,
 FileAccess.Read);

 //Use BinaryReader to read file stream into byte array.
 BinaryReader br = new BinaryReader(fStream);

 data = br.ReadBytes((int)numBytes);
 return data;

1. Na zaciatku sa vytvori pole bytov.

2. Pomocou FileInfo sa zrejme zisti velkost obrazka podla ktorej sa nastavi pole.

3. Trieda FileStream: Pouzivam ju prvy krat a podla toho co som citala je to nejaky abstraktny obal nad polom bytov. Predstavujem si to asi tak, ze ak StreamWritter nejakym sposobom obaluje, alebo zapuzdruje funkcie pre pracu s textovym suborom, FileStream umoznuje to iste s prudom bytov. Prosim, pokial tomu rozumiem zle, opravte ma.

4.BinaryReader: Ten by mal umoznovat zapis/citanie do/z binarnych suborov. A tu je problem. Neviem, preco sa to riesi takto. Nestaci jednoducho ulozit ten obrazok pomocou FileStreamu do pola bytov a to pole nasledne ulozit do DB ? Aky je vlastne vztah medzi BinaryReaderom a FileStreamerom. Pozerala som sa aj na MSDN a asi tak ako som to uviedla vyssie som tomu pochopila. Tu mi je to ale nejasne a velmi by mi pomohlo, keby som vedela o co tam ide, pretoze na zaciatku studia som sa ucila kody skoro naspamat a velmi mi to nepomohlo.

Za pochopenie a trpezlivost dakujem  

Nahlásit jako SPAM
IP: 89.173.138.–
Reklama
Reklama
10. 6. 2012   #2
-
0
-

#1 Anny
Ahoj, v podstatě správně, ale:

3. Stream obecně umožňuje přístup k nějakému proudu data (v případě FileStream se jedná o nějaký soubor). StreamWriter nám pak usnadňuje práci s textem v takovém Streamu (nemusí to být nutně soubor), nabízí metody Write, WriteLine, apod. Jeho obdobou je StreamReader, který naopak textová data čte.

4. BinaryReader je pak obdobou StreamReaderu, ale není určený k praci s textem, ale k práci s binárními daty. StreamReader i BinaryReader je tedy jakýsi obal Streamu (FileStreamu). V tomhle případě je IMO zbytečné ho použít.

Nevím, co přesně je cílem takového úkolu. Procvičení práce se Streamy? Pokud ne, lze to dost zjednodušit: 

byte[] bytes = File.ReadAllBytes(path);
Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Anny
~ Anonymní uživatel
7 příspěvků
10. 6. 2012   #3
-
0
-

Takze FileStream je vlastne nejaka najnizsia mozna miera abstrakcie ? Predstavuje nejake data a napr StreamWriter mi umozni pracovat s nimi ako s textom, BinaryWriter ako s binarnym suborom. A pretoze ja chcem obrazok ulozit do DB ako byty, pouzijem BinaryReader.

A nema BinaryReader metodu, ktorou zo suboru priamo precita byty ako to robi StreamReader ? To pretypovanie na int v tomto kroku

data = br.ReadBytes((int)numBytes);

sa predpokladam robi vzdy, kedze sa ukladaju len 1 a 0 ? Chapem tomu spravne ? 

//Nejde ani tak o prudy ako cisto o ulozenie toho obrazka. Ale ked som sa s tym zacala hrat, nebude na skodu, vyskusat si oboje.

V kazdom pripade dakujem  

Nahlásit jako SPAM
IP: 89.173.138.–
Anny
~ Anonymní uživatel
7 příspěvků
10. 6. 2012   #4
-
0
-

"sa predpokladam robi vzdy, kedze sa ukladaju len 1 a 0 ? Chapem tomu spravne ?"

Aha, to je hlupost. Ja som si nevsimla k comu to patri  

Nahlásit jako SPAM
IP: 89.173.138.–
11. 6. 2012   #5
-
0
-

#4 Anny
Jo, to je hodnota určující kolik dat se má přečíst.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Johnnny0
Návštěvník
11. 6. 2012   #6
-
0
-

Zdravim

Nechcem zakladat novu temu, takze mam tiez problem s pochopenim kodu.

 using (var store = IsolatedStorageFile.GetUserStoreForApplication())
   2: using (var stream = new IsolatedStorageFileStream("data.txt", 
   3:                                                   FileMode.Create, 
   4:                                                   FileAccess.Write, 
   5:                                                   store))
   6: {
   7:     // Write to our file
   8: }

Tomu druhemu usingu rozumiem. Ten prvy ale nema telo. Myslel som, ze ide o nejaku skratenu syntax s vnorenym usingom, ale ked som sa to na inom priklade (v knihe) pokusil odzatvorkovat, nefungovalo to. Spravil som v kode chybu, alebo je toto nejake specialne pouzitie usingu ?

Nahlásit jako SPAM
IP: 212.89.227.–
11. 6. 2012   #7
-
0
-

#6 Johnnny
Samozřejmě, že má tělo. Je jím ten druhý using. Je to stejné jako: 

using (...)
{
    using (...)
    {
    }
}
Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Johnnny0
Návštěvník
11. 6. 2012   #8
-
0
-

No to som si povodne myslel, ale ked som to prepisal do toho tvaru, tak kod nefungoval. Az sa vratim domov, skusim to este raz.

Nahlásit jako SPAM
IP: 212.89.227.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 33 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý