Umíme to s Delphi: 156. díl – paměťové proudy

Diskuze čtenářů k článku

gully, gully  |  12. 07. 2005 00:32  | 

http://umime-to-s-delphi.wz.cz

Souhlasím  |  Nesouhlasím  |  Odpovědět
PanFiluta  |  12. 07. 2005 10:06  | 

> x := TFileStream.Create('info.txt', fmOpenRead);
> Delka:= x.Size;
> while (precteno < delka) do begin
> // cteme az do konce souboru
> if (x.Read(buf^, 1) = 0) then break;
> // pekne znak po znaku
> ret := ret + buf[0]; // a vytvarime vysledny retezec
> Inc(Precteno);
> end;

... to si snad delate srandu - ne?? Nacitat ze streamu retezec byte po bytu ve smycce a navic pridavat do stringu pomoci "ret := ret + buf[0];". Kdyz se takhle delaji programy, tak se clovek nemuze divit, ze kazdej programek potrebuje PC 3GHz a 512MB RAM ... pomalejsi kod uz snad ani nejde napsat!!
Kdyz to nakonec nacitate do TMemo a chcete mermomoci prejit pres TStream, tak snad pouziji metodu TMemo.LoadFromStream
Pokud to potrebuji nacist do Stringu, tak snad metoda TFileStream.Read umoznuje nacist i vice znaku - tak proc ne rovnou vsechny (nehlede na to, ze pridavat znaky do Stringu systemem ret:=ret+znak; je jedna z nejpomalejsich operaci, protoze program bude pri kazdem pridavanem znaku nove alokovat misto v pameti pro retezec o 1 znak vetsi ...)? Napriklad:

x:=TFileStream.Create('info.txt',fmOpenRead);
try
SetLength(ret,x.Size);
x.Read(ret[1],x.Size);
memo1.Lines.Text:=ret;
finally
x.Free;
end;

Souhlasím  |  Nesouhlasím  |  Odpovědět
vlado  |  12. 07. 2005 15:58  | 

Musim sa autorov clanku zastat aj ked s nimi nemam nic spolocne. Tieto clanky podla mna sluzia pre zacinajucich programatorov na pochopenie problemu a nie su urcene na priamu implementaciu do hotovych programov. Dokonca si myslim ze to robia dobre. Ak sa chces vytahovat svojim programatorskym umenim mal by si to skusat inde. 

Souhlasím  |  Nesouhlasím  |  Odpovědět
PanFiluta  |  12. 07. 2005 18:11  | 

Uznavam, ze jsem to s reakci krapet prehnal, ale prave ucit zacatecniky delat chyby neni dle meho nazoru zrovna nejlepsi reseni. Protoze kdyz si nekdo zafixuje urcite nespravne postupy, tak akorat v budoucnu bude mit vic prace a gulas v hlave. Ve skole vas take nejdrive neuci kudy cesta nevede. Proste clanek by mel nejmin obsahovat zminku o vyhodach a nevyhodach pouziteho reseni ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Michal  |  12. 07. 2005 12:36  | 

"...ovšem pokud nové údaje budou starší než ty původní, pak zbytek těch původních v proudu zůstane"
Tato část věty mě pobavila a jestli se nepletu tak pan autor zamýšlel napsat:
"...ovšem pokud nové údaje budou kratší než ty původní, pak zbytek těch původních v proudu zůstane"
a ještě bych se chtěl jako méně zkušený programátor zeptat jaké jsou výhody použití TMemoryStream při uložení obsahu mema oproti tomu uložit obsah mema do proměnné typu string.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Pepak  |  12. 07. 2005 14:09  | 

"a ještě bych se chtěl jako méně zkušený programátor zeptat jaké jsou výhody použití TMemoryStream při uložení obsahu mema oproti tomu uložit obsah mema do proměnné typu string."

Proto, proc stoji za to pouzivat streamy obecne - da se to s minimalni namahou predelat na ukladani kamkoliv. Napriklad na odeslani pres TCP/IP na jiny pocitac nebo pro ulozeni do GZIPovaneho souboru.

Souhlasím  |  Nesouhlasím  |  Odpovědět
tx  |  14. 07. 2005 10:15  | 

Budete sa este niekedy zaoberat tpc/ip komunikaciou pomocou komponent TcpClient a TcpServer, ci sa do problematiky nevyznate? /vid. publikacia Delphi-hotova reseni/. Ako klient prijme data so servera? Ako donutim klietna nieco prijat? mne netreba mazat obarzovku na servery a aj ked ano tak chcem aby mi server poslal potvrdenie o jej skutocnom vymazani!!! Zbytocne vyhodene koruny za knihu... S komponenty ClientSoket a ServerSocket som frajer aj ja... za pochopenie dakujem!

Souhlasím  |  Nesouhlasím  |  Odpovědět
nomon  |  26. 03. 2006 19:41  | 

Taky nemůžu najít rozumný způsob, ako dostat potvrzení od serveru, že data přijal. Už na to nemám nervy. Udělat aplikaci, kde server púříjme data umí i blbec.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor

Aktuální číslo časopisu Computer

Test 9 bezdrátových reproduktorů

Jak ovládnout Instagram

Test levných 27" herních monitorů

Jak se zbavit nepotřebných věcí na internetu