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:

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes;
var
  oReader: TBinaryReader;
  oWriter: TBinaryWriter;
  s: string = 'Temp Text';
  s2: string;
  d: double = 3.5;
begin
  s2 := StringOfChar('A', 400);
  oWriter := TBinaryWriter.Create('test');
  try
    oWriter.Write(s); // string
    oWriter.Write(byte(1)); // byte
    oWriter.Write(True); // boolean
    oWriter.Write(d); // double 8byte
    oWriter.Write(s2); // string
  finally
    oWriter.Free;
  end;

  oReader := TBinaryReader.Create('test');
  try
    writeln(oReader.ReadString);
    writeln(oReader.ReadByte);
    writeln(oReader.ReadBoolean);
    writeln(oReader.ReadDouble);
    writeln(oReader.ReadString);
  finally
    oReader.Free;
  end;
end.

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.

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

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

Tagy: ,

Novinky v Delphi

Komentování ukončeno

Naše nabídka

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).

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.

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.

Poslední komentáře

Comment RSS