• [转载]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:tempMyListBoxItems.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/

    翻译:峪飞鹰

    转载请注明出处!

  • 相关阅读:
    vijos 1066 弱弱的战壕 树状数组
    vijos 1057 盖房子 简单DP
    完全背包
    HDU 1203 和 HDU 2191
    dp 01背包,完全背包,多重背包 模板
    UVA11624 Fire!
    我们要学习的算法
    Find a way 两路广搜
    NYOJ 最小步数(简单深搜与广搜)
    HDU Dungeon Master广搜
  • 原文地址:https://www.cnblogs.com/luckForever/p/7255308.html
Copyright © 2020-2023  润新知