delphi TFileStream 流操作2


本文整理自网络,侵删。

 
unit frmMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  // 测试数据
  TPerson = record
    Name: string;
    Age: Integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  FileStream: TFileStream;

var
  Person: TPerson;
begin
  try
    FileStream := TFileStream.Create('Person.txt', fmCreate);
    // 构造结构体数据
    Person.Name := '萧蔷';
    Person.Age := 20;
    // 写出数据
    FileStream.Write(Person, sizeof(Person));

  finally

    FreeAndNil(FileStream);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  FileStream: TFileStream;

var
  Person: TPerson;
begin
  try
    FileStream := TFileStream.Create('Person.txt', fmOpenRead);
    // 设置文件指针的位置
    FileStream.Position := 0;

    // 无法直接读取结构体
    // Self.Memo1.Lines.LoadFromFile('E:\Demo\Person.txt');
    // Self.Memo1.Lines.LoadFromStream(FileStream);

    // 遍历流中的数据(字节)
    while FileStream.Position < FileStream.Size do begin

      FileStream.Read(Person, sizeof(Person));

      Self.Memo1.Lines.Add(Person.Name + ',' + Person.Age.ToString);
    end;
  finally
    FreeAndNil(FileStream);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  FileStream: TFileStream;
begin
  try
    FileStream := TFileStream.Create('Memo.txt', fmCreate);

    with Self.Memo1 do begin
      Lines.Add('Hello');
      Lines.Add('World');
      Lines.Add('期待B站粉丝过万');
    end;

    FileStream.WriteComponent(Self.Memo1);

  finally
    FreeAndNil(FileStream);
  end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  FileStream: TFileStream;
begin
  try
    FileStream := TFileStream.Create('Memo.txt', fmOpenRead);
    FileStream.ReadComponent(Self.Memo1);
  finally
    FreeAndNil(FileStream);
  end;

end;

procedure TForm1.Button5Click(Sender: TObject);
var
  FileStream: TFileStream;
begin
  Self.Memo1.Lines.LoadFromFile('demo.txt');
  // FileStream := TFileStream.Create('E:\Demo\demo.txt', fmOpenRead);
  // Self.Memo1.Lines.LoadFromStream(FileStream, TEncoding.utf8);
  // FreeAndNil(FileStream);
end;

end.

相关阅读 >>

Delphi 自带大小写转换

Delphi twebbrowser出现 method pastehtml not supported by automation object 解决方法

Delphi 10.3.1 android沉浸式透明状态栏

Delphi循环遍历同类控件或所有控件

Delphi使用正则匹配网页数据

Delphi datamodule1 fdconnection1数据库连接

Delphi截取字符串

Delphi 字符串转换为16进制整数 整数转换为16进制字符串

Delphi richedit控件中插入gif动画表情

Delphi 控制台应用程序 hello world

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...