Tiburon 支持 Unicode 的 LoadFromFile, SaveToFile

在 Tiburon 中,我可以在诸如 TMemo, TListBox, TComboBox (和其它包含字符的 lists)等控件中使用 Unicode 字符。那如何从一个文件中加载、保存 strings 呢?我需要在已经用 Delphi 和 C++ Builder 写好的程序中做什么样的更改才能为这些组件处理 Unicode 字符呢?下面就是答案:

在 LoadFromFile 和 SaveToFile 方法中,出现了一个新的、可选的参数。可选参数名字是 "Encoding",其类型是 "TEncoding"。TEncoding (该类型声明在 SysUtils 单元内)几个 class properties,可以帮助您指定加载或者保存的 strings 的类型:ASCII, BigEndianUnicode, Default, Unicode, UTF7, UTF8。

下面是 LoadFormFile 和 SaveToFile 在包含 TStrings 类型的控件中的声明(声明在 Classes 单元中):

Delphi:
  procedure TStrings.LoadFromFile(const FileName: string);
  procedure TStrings.LoadFromFile(const FileName: string; Encoding: TEncoding);
  procedure TStrings.SaveToFile(const FileName: string);
  procedure TStrings.SaveToFile(const FileName: string; Encoding: TEncoding);

C++Builder:
  virtual void __fastcall LoadFromFile(const System::UnicodeString FileName);
  virtual void __fastcall LoadFromFile(const System::UnicodeString FileName, Sysutils::TEncoding* Encoding);
  virtual void __fastcall SaveToFile(const System::UnicodeString FileName);
  virtual void __fastcall SaveToFile(const System::UnicodeString FileName, Sysutils::TEncoding* Encoding);

查看 Delphi 中 implementation 部分的 SaveToFile 方法,可以看到它使用了 TStream 来保存带有 TEncoding 信息的 strings:

procedure TStrings.SaveToFile(const FileName: string);
begin
  SaveToFile(FileName, nil);
end;

procedure TStrings.SaveToFile(const FileName: string; Encoding: TEncoding);
var
  Stream: TStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    SaveToStream(Stream, Encoding);
  finally
    Stream.Free;
  end;
end;

下面的示例展示了如何在你的窗体上用 ListBox 控件加载和保存 strings:

Delphi:
  Listbox1.Items.LoadFromFile(’c:\temp\MyListBoxItems.txt’,TEncoding.UTF8)
  ListBox1.Items.SaveToFile(’MyListBoxItems.txt’,TEncoding.UTF8);

C++Builder:
  ListBox1->Items->LoadFromFile("c:\\temp\\MyListBoxItems.txt", TEncoding::UTF8);
  ListBox1->Items->SaveToFile("c:\\temp\\MyListBoxItems.txt",TEncoding::UTF8);

这是上面这个 Delphi 例子程序的屏幕截图:

Tiburon <wbr>支持 <wbr>Unicode <wbr>的 <wbr>LoadFromFile, <wbr>SaveToFile

使用 Tiburon,现在我的 Delphi 和 C++ Demo 程序可以在列表框、编辑框和标签上使用 Uincode 字符了,而且我也可以直接在硬盘上读写 Unicode 的 strings。

原文地址:http://blogs.codegear.com/davidi/2008/07/15/38898/

翻译:峪飞鹰

转载请注明出处!

posted @ 2010-06-11 11:02  Delcpp  阅读(1126)  评论(0编辑  收藏  举报