用 Memo 读取 UniCode 编码的文本文件 - 回复 "ahgan" 的问题

本文探讨了为什么80%的程序员难以晋升为架构师,深入分析了技能差距、思维方式转变及实践经验的重要性。
问题来源: 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.

 
 
 
 
 

 

 

  

转载于:https://my.oschina.net/hermer/blog/320658

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值