「Team Japan » C++Builder XE6 – iOS/Androidのzlibを利用する」と同じ処理をDelphi XE6で書いてみました。
Delphi XE6とNexus7で動作を確認しました。
iOSでも動作すると思います。
ボタンを2つ、フォームにTEditを2つ、TLabelを1つ配置します。
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;