加载中…
个人资料
我在沉睡
我在沉睡
  • 博客等级:
  • 博客积分:0
  • 博客访问:101,377
  • 关注人气:10
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

Tiburon 支持 Unicode 的 LoadFromFile, SaveToFile

(2008-07-19 18:16:12)
标签:

delphi

2009

tiburon

unicode

loadformfile

savetofile

tencoding

it

分类: Delphi 探索
在 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/

翻译:峪飞鹰

转载请注明出处!

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有