TBinaryReader a TBinaryWriter

vložil Radek Červinka 16. října 2010 00:44

V každé nové verzi Delphi přibude pár užitečných tříd, no a kromě jiných je to v Delphi XE implementace TBinaryReader a TBinaryWriter. Je jasné, že se něco podobného dá naprogramovat za odpoledne, ale přesto mne originální implementace potěšila.

Jak názvy napovídají, jedná se o třídy pomáhající s implementací binárního zápisu a čtení to streamu (souboru). Uvedu rovnou nějaký příklad:

    1program Project1;
    2
    3{$APPTYPE CONSOLE}
    4
    5uses
    6  SysUtils, Classes;
    7var
    8  oReader: TBinaryReader;
    9  oWriter: TBinaryWriter;
   10  s: string = 'Temp Text';
   11  s2: string;
   12  d: double = 3.5;
   13begin
   14  s2 := StringOfChar('A', 400);
   15  oWriter := TBinaryWriter.Create('test');
   16  try
   17    oWriter.Write(s); // string
   18    oWriter.Write(byte(1)); // byte
   19    oWriter.Write(True); // boolean
   20    oWriter.Write(d); // double 8byte
   21    oWriter.Write(s2); // string
   22  finally
   23    oWriter.Free;
   24  end;
   25
   26  oReader := TBinaryReader.Create('test');
   27  try
   28    writeln(oReader.ReadString);
   29    writeln(oReader.ReadByte);
   30    writeln(oReader.ReadBoolean);
   31    writeln(oReader.ReadDouble);
   32    writeln(oReader.ReadString);
   33  finally
   34    oReader.Free;
   35  end;
   36end.

Velmi přímočaré.

Osobně se mi líbí ukládání a načítání stringu, kdy naprosto transparentně je ukládána před řetězec velikost a to celkem efektivně, kdy pro délku do 127 byte (tj. 7 bitů, eliminace problémů s načítáním) je např. použit jen jeden byte atd. Při načítání nemusíte nic řešit, řetězec bude načten správně.

To ale není vše. Navíc se dá v konstruktoru předat kódování pod kterým budou stringy ukládány (nebo načítány). Následující kód uloží text jako UTF8. Kromě uvedené lze v konstruktoru předat stream.

    1oWriter := TBinaryWriter.Create('test2', False, TEncoding.UTF8);
    2  try
    3    oWriter.Write('Příliš žluťoučký kůň úpěl ďábelské ódy');
    4  finally
    5    oWriter.Free;
    6  end;

Pro doplnění: online dokumentace TBinaryWriter a TBinaryReader.


Nabízíme Delphi školení na různá témata, primárně ve Vaší firmě.

Tagy: ,

Novinky v Delphi

Komentování ukončeno

Naše nabídka

Partial English version.

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy nebo burzy práce).

Pokud chcete podpořit tento server libovolnou částkou, můžete použít PayPal. Moc děkuji.

Delphi Certified Developer

O Delphi.cz

Delphi je jediný moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64 , Mac OSX a na iPhone a Android (s výhledem na další platformy díky FireMonkey) na současném trhu (včetně Windows 8.1).

V současnosti je světová komunita přes dva miliónů vývojářů.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Anketa

Poslední komentáře

Comment RSS