unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
  stream1,stream2: TStringStream;
  b: Byte;
  bs: string;
begin
  {建立第一个流, 使用默认的双字节编码; 流中的数据是 Memo 中的字符串}
  stream1 := TStringStream.Create(Memo1.Text, 54936);
  {把第一个流的十六进制编码显示在 Memo 中}
  bs := '';
  for b in stream1.Bytes do bs := Format(bs + '%2x ', [b]);
  Memo1.Lines.Add(bs);
  {建立第二个流, 用 UTF8 编码; 还是基于第一个流中的字符串}
  stream2 := TStringStream.Create(stream1.DataString, TEncoding.UTF8);
  {把第二个流的十六进制编码显示在 Memo 中}
  bs := '';
  for b in stream2.Bytes do bs := Format(bs + '%2x ', [b]);
  Memo1.Lines.Add(bs);
  stream1.Free;
  stream2.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Align := alTop;
  Memo1.ScrollBars := ssBoth;
  Memo1.Text := '万一的 Delphi 博客';
end;
end.