zoukankan      html  css  js  c++  java
  • 用 Memo 读取 UniCode 编码的文本文件 回复 "ahgan" 的问题

    问题来源: http://www.cnblogs.com/del/archive/2008/05/29/1005631.html#1212654

    首先, 这个问题到 Delphi 2008 时, 可能就不存在了, 因为那时的 TStrings 肯定支持 UniCode; 当前版本是 2007.
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FormCreate(Sender: TObject);
    var
      Stream: TMemoryStream;
      pwc: PWideChar;
    begin
      Stream := TMemoryStream.Create;
      Stream.LoadFromFile('c:\temp\UniCode.txt');
      pwc := Stream.Memory;
      //Inc(pwc);  {可能开始字节有个乱码, 这样可以去掉}
      Memo1.Lines.Text := pwc;
      Stream.Free;
    end;
    
    end.
    
    做成函数的形式:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    //打开 UniCode 格式的文本文件的函数:
    function LoadUniCodeTxt(f: string): AnsiString;
    var
      Stream: TMemoryStream;
      p: PWideChar;
    begin
      Result := '';
      if not FileExists(f) then Exit;
      Stream := TMemoryStream.Create;
      Stream.LoadFromFile(f);
      p := Stream.Memory;
      Inc(p);
      Result := p;
      Stream.Free;
    end;
    
    //调用测试:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      str: string;
    begin
      str := LoadUniCodeTxt('c:\temp\UniCode.txt');
      Memo1.Clear;
      Memo1.Lines.Add(str);
    end;
    
    end.
    
  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/del/p/1209887.html
Copyright © 2011-2022 走看看