Delphi FDMemTable内存表用法及简单操作函数封装

本文介绍了一种轻量级内存表FDMemTable的实际应用场景,特别是在多线程下载工具中,如何有效管理和持久化每个下载任务的状态和位置数据。通过实例展示了其高效的内存管理和快速的数据读写能力。

在某些场景下当轻量级的应用需要在内存中缓存数量比较多且字段比较多的高频使用数据时。以前我都是采用Ini或直接使用sqlite数据库。JSON也试过基本无法或很难实现需要的功能,因为当涉及某一同类型对象多字段多列时不通过遍历基本无法直接取到或修改数据。这样就导致了效率的低下。比如你在写一个多任务多线程并发断点续传下载工具的时候,就意味着要同时保存每个下载任务N个线程的不同状态和位置数据。并在关闭后持久化到磁盘。然后重新加载。最近发现FDMemTable真的是个好东西。非常好用。也轻量级。不像ClientDataSet还需要Midas.dll才能工作,简单记录一下

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls,
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
  FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
  Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client, Vcl.Grids, Vcl.DBGrids,Math
;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    Label1: TLabel;
    edtThreadCount: TEdit;
    Label2: TLabel;
    edtFileSize: TEdit;
    Button8: TButton;
    FDMemTable1: TFDMemTable;
    Button1: TButton;
    Button2: TButton;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Button3: TButton;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }

    {内存表操作}
    function GetIntByKey(IdkeyName:string; IdNo:Integer; KeyName:string):Integer;
    function GetStrByKey(IdkeyName:string; I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值