You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中TArrayField使用示例请求:存储可变长度整数数组

使用TArrayField在TFDMemTable中存储可变长度整数数组示例

1. 引用必要单元

确保项目中引用以下FireDAC和数据相关单元:

uses
  System.SysUtils, System.Types, System.Classes, Data.DB,
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
  FireDAC.Stan.Error, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
  FireDAC.Stan.Async, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client;

2. 创建TFDMemTable与TArrayField

动态创建TFDMemTable,并添加TArrayField用于存储整数数组,指定元素类型为整数:

var
  FDMemTable: TFDMemTable;
  IntArrayField: TArrayField;
begin
  FDMemTable := TFDMemTable.Create(nil);
  try
    // 创建数组字段
    IntArrayField := TArrayField.Create(FDMemTable);
    IntArrayField.FieldName := 'IntegerArray';
    IntArrayField.DataType := ftArray;
    // 指定数组元素为整数类型
    IntArrayField.ArrayElementType := ftInteger;
    
    // 构建表结构
    FDMemTable.FieldDefs.Add(IntArrayField.FieldName, IntArrayField.DataType);
    FDMemTable.CreateDataSet;

3. 写入可变长度整数数组

通过Append/Post操作,向表中写入不同长度的整数数组:

// 写入长度为3的数组
    FDMemTable.Append;
    TArrayField(FDMemTable.FieldByName('IntegerArray')).SetArray([10, 20, 30]);
    FDMemTable.Post;

    // 写入长度为5的数组
    FDMemTable.Append;
    TArrayField(FDMemTable.FieldByName('IntegerArray')).SetArray([1, 2, 3, 4, 5]);
    FDMemTable.Post;

    // 写入空数组
    FDMemTable.Append;
    TArrayField(FDMemTable.FieldByName('IntegerArray')).SetArray([]);
    FDMemTable.Post;

4. 读取存储的数组数据

遍历TFDMemTable,读取每条记录中的整数数组:

// 遍历读取数组
    FDMemTable.First;
    while not FDMemTable.Eof do
    begin
      var Arr := TArrayField(FDMemTable.FieldByName('IntegerArray')).GetArray as TArray<Integer>;
      Writeln(Format('记录%d:数组长度%d,元素:', [FDMemTable.RecNo, Length(Arr)]));
      for var I := 0 to High(Arr) do
        Writeln(Format('  Arr[%d] = %d', [I, Arr[I]]));
      FDMemTable.Next;
    end;
  finally
    FDMemTable.Free;
  end;
end;

关键说明

  • TArrayField的ArrayElementType必须与存储的数组元素类型匹配,此处ftInteger对应Delphi的Integer类型
  • SetArray方法可直接传入动态数组TArray<Integer>完成赋值
  • GetArray方法返回的Variant可直接转换为TArray<Integer>
  • 完全支持任意长度的整数数组,包括空数组

内容的提问来源于stack exchange,提问作者user3140961

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:40:08