在 Delphi 2009 中,
TStrings 类(包括 TStringList 和包含 TStrings 属性的所有组件, 譬如 Memo.lines 属性、ListBox.Items 属性)、
TStream 类系列(包括 TFileStream、TMemoryStream 等) 的存取方法, 譬如:
LoadFromFile、SaveToFile、LoadFromStream、SaveToStream, 都有了选择 TEncoding 参数的重载.
本例效果图:
代码文件:
TStrings 类(包括 TStringList 和包含 TStrings 属性的所有组件, 譬如 Memo.lines 属性、ListBox.Items 属性)、
TStream 类系列(包括 TFileStream、TMemoryStream 等) 的存取方法, 譬如:
LoadFromFile、SaveToFile、LoadFromStream、SaveToStream, 都有了选择 TEncoding 参数的重载.
本例效果图:
代码文件:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Memo2: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} const FilePath = 'c:\temp\test.txt'; var str: string; procedure TForm1.FormCreate(Sender: TObject); begin Memo1.ReadOnly := True; str := Memo1.Text; Button1.Caption := 'TStrings 默认存取'; Button2.Caption := 'TStrings ASCII 存取'; Button3.Caption := 'TStrings UTF8 存取'; Button4.Caption := 'TFileStream 默认存取'; Button5.Caption := 'TFileStream ASCII 存取'; Button6.Caption := 'TFileStream UTF8存取'; Button7.Caption := 'TMemoryStream 默认存取'; Button8.Caption := 'TMemoryStream ASCII 存取'; Button9.Caption := 'TMemoryStream UTF8 存取'; end; procedure TForm1.Button1Click(Sender: TObject); var List: TStrings; begin List := TStringList.Create; List.Text := str; List.SaveToFile(FilePath); List.LoadFromFile(FilePath); Memo2.Lines := List; List.Free; end; procedure TForm1.Button2Click(Sender: TObject); var List: TStrings; begin List := TStringList.Create; List.Text := str; List.SaveToFile(FilePath, TEncoding.ASCII); List.LoadFromFile(FilePath, TEncoding.ASCII); Memo2.Lines := List; List.Free; end; procedure TForm1.Button3Click(Sender: TObject); var List: TStrings; begin List := TStringList.Create; List.Text := str; List.SaveToFile(FilePath, TEncoding.UTF8); List.LoadFromFile(FilePath, TEncoding.UTF8); Memo2.Lines := List; List.Free; end; procedure TForm1.Button4Click(Sender: TObject); var stream: TStream; begin stream := TFileStream.Create(FilePath, fmCreate); Memo1.Lines.SaveToStream(stream); stream.Position := 0; Memo2.Lines.LoadFromStream(stream); stream.Free; end; procedure TForm1.Button5Click(Sender: TObject); var stream: TStream; begin stream := TFileStream.Create(FilePath, fmCreate); Memo1.Lines.SaveToStream(stream, TEncoding.ASCII); stream.Position := 0; Memo2.Lines.LoadFromStream(stream, TEncoding.ASCII); stream.Free; end; procedure TForm1.Button6Click(Sender: TObject); var stream: TStream; begin stream := TFileStream.Create(FilePath, fmCreate); Memo1.Lines.SaveToStream(stream, TEncoding.UTF8); stream.Position := 0; Memo2.Lines.LoadFromStream(stream, TEncoding.UTF8); stream.Free; end; procedure TForm1.Button7Click(Sender: TObject); var stream: TMemoryStream; begin stream := TMemoryStream.Create; Memo1.Lines.SaveToStream(stream); stream.SaveToFile(FilePath); stream.LoadFromFile(FilePath); stream.Position := 0; Memo2.Lines.LoadFromStream(stream); stream.Free; end; procedure TForm1.Button8Click(Sender: TObject); var stream: TMemoryStream; begin stream := TMemoryStream.Create; Memo1.Lines.SaveToStream(stream, TEncoding.ASCII); stream.SaveToFile(FilePath); stream.LoadFromFile(FilePath); stream.Position := 0; Memo2.Lines.LoadFromStream(stream, TEncoding.ASCII); stream.Free; end; procedure TForm1.Button9Click(Sender: TObject); var stream: TMemoryStream; begin stream := TMemoryStream.Create; Memo1.Lines.SaveToStream(stream, TEncoding.UTF8); stream.SaveToFile(FilePath); stream.LoadFromFile(FilePath); stream.Position := 0; Memo2.Lines.LoadFromStream(stream, TEncoding.UTF8); stream.Free; end; end.窗体文件:
object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 103 ClientWidth = 686 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 117 Top = 8 Width = 150 Height = 25 Caption = 'Button1' TabOrder = 0 OnClick = Button1Click end object Button2: TButton Left = 268 Top = 8 Width = 150 Height = 25 Caption = 'Button2' TabOrder = 1 OnClick = Button2Click end object Button3: TButton Left = 419 Top = 8 Width = 150 Height = 25 Caption = 'Button3' TabOrder = 2 OnClick = Button3Click end object Button4: TButton Left = 117 Top = 39 Width = 150 Height = 25 Caption = 'Button4' TabOrder = 3 OnClick = Button4Click end object Memo1: TMemo Left = 0 Top = 0 Width = 116 Height = 103 Align = alLeft Lines.Strings = ( 'Hello World' #19990#30028#24744#22909 #12495#12525#12540#19990#30028 #50668#47084#48516', '#50504#45397#54616#49464#50836 'Ol'#225' Mundo' #1055#1088#1080#1074#1077#1090' '#1084#1080#1088) TabOrder = 4 end object Memo2: TMemo Left = 570 Top = 0 Width = 116 Height = 103 Align = alRight Lines.Strings = ( 'Memo2') TabOrder = 5 ExplicitLeft = 578 end object Button5: TButton Left = 268 Top = 39 Width = 150 Height = 25 Caption = 'Button5' TabOrder = 6 OnClick = Button5Click end object Button6: TButton Left = 419 Top = 39 Width = 150 Height = 25 Caption = 'Button6' TabOrder = 7 OnClick = Button6Click end object Button7: TButton Left = 117 Top = 70 Width = 150 Height = 25 Caption = 'Button7' TabOrder = 8 OnClick = Button7Click end object Button8: TButton Left = 268 Top = 70 Width = 150 Height = 25 Caption = 'Button8' TabOrder = 9 OnClick = Button8Click end object Button9: TButton Left = 419 Top = 70 Width = 150 Height = 25 Caption = 'Button9' TabOrder = 10 OnClick = Button9Click end end