Delphi XE6 – Androidのzlibを利用する

Team Japan » C++Builder XE6 – iOS/Androidのzlibを利用する」と同じ処理をDelphi XE6で書いてみました。

Delphi XE6とNexus7で動作を確認しました。
iOSでも動作すると思います。

ボタンを2つ、フォームにTEditを2つ、TLabelを1つ配置します。

zlib

Writeボタンを押すと、TEditに入力されている文字列をUTF-8のバイト列にして圧縮して保存します。

uses System.IOUtils, System.ZLib;

procedure TForm1.Button1Click(Sender: TObject);
var
  FN: string;
  Bytes: TBytes;
  FS: TFileStream;
  CS: TZCompressionStream;
begin
  FN := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath(),
    'test.gz');

  FS := TFileStream.Create(FN, fmCreate);
  CS := TZCompressionStream.Create(FS);

  Bytes := TEncoding.UTF8.GetBytes(Edit1.Text);
  CS.Write(Bytes, Length(Bytes));

  Bytes := TEncoding.UTF8.GetBytes(Edit2.Text);
  CS.Write(Bytes, Length(Bytes));

  CS.Free;
  FS.Free;
end;

Readボタンを押すと、圧縮して保存されたデータを読み出して復元します。

procedure TForm1.Button2Click(Sender: TObject);
var
  FN: string;
  DS: TZDecompressionStream;
  FS: TFileStream;
  Bytes: TBytes;
begin
  FN := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath(),
    'test.gz');

  FS := TFileStream.Create(FN, fmOpenRead);
  DS := TZDecompressionStream.Create(FS);
  SetLength(Bytes, DS.Size);
  DS.Position := 0;
  DS.Read(Bytes, DS.Size);
  DS.Free;
  FS.Free;

  Label1.Text := TEncoding.UTF8.GetString(Bytes);
end;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください