zoukankan      html  css  js  c++  java
  • Delphi 2009 中 TStrings 与 TStream 的增强

    在 Delphi 2009 中,
    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
    
  • 相关阅读:
    CSS特效(9)——图片倒影效果
    CSS特效(8)——单行居中,多行居左,超过两行用省略号(绝对定位)
    CSS特效(7)——单行居中,多行居左,超过两行用省略号
    CSS特效(6)——使用 mix-blend-mode 制作文字背景图
    CSS特效(5)——使用 background-clip 制作文字背景图
    CSS特效(4)——使用 background-blend-mode 制作 hover 效果
    CSS特效(3)——target伪类实现tab切换
    CSS特效(2)——input radio、label实现tab切换
    三国志·魏书·牵招传
    vue初体验
  • 原文地址:https://www.cnblogs.com/del/p/1269606.html
Copyright © 2011-2022 走看看