Delphi 将数据存储在数组中并检索它

Delphi Storing data in Array and retrieve it

我需要像这样在数组中存储两个字符串,并在另一个函数中检索值以使用它。

Date Start Date End
VALUE_START VALUE_END
VALUE_START2 VALUE_END2

我认为正确的方法是使用此变量 StoringData : TArray<String>,但我如何使用 VALUE_START 和 VALUE_END 对其进行赋值?

首先你必须定义一个可以容纳两个字符串的数据类型:

type
    TPeriod = record
        DateStart : String;     // Isn't TDateTime better than String here ?
        DateEnd   : String;
    end;

然后你可以声明一个动态数组如果那个数据类型

var
    StoringData : TArray<TPeriod>;

在某些时候,您必须为数组分配 space(这是一个动态数组,因此在声明时没有分配 space)

SetLength(StoringData, TheSizeYouNeed);

您可以像这样访问数组元素:

StoringData[0].DateStart := '04/05/2021';
StoringData[0].DateEnd   := '06/05/2021';
StoringData[1].DateStart := '04/06/2021';
StoringData[1].DateEnd   := '06/06/2021';

您不需要释放已分配的 space,它会自动完成,但如果您需要回收内存,您可以这样做。使用零大小调用 SetLength。

您可以调整数组的大小。将保留现有数据(如果缩小尺寸,当然会丢失一些数据):

SetLength(StoringData, 3);   // Add a third more row
// Assign a value
StoringData[2].DateStart := '04/07/2021';
StoringData[2].DateEnd   := '06/07/2021';

创建一个二维数组,第一维是动态的,第二维是静态的:

TYPE
  TPeriod = ARRAY[1..2] OF STRING;
  TPeriods = TArray<TPeriod>;

VAR
  Periods : TPeriods;

BEGIN
  SetLength(Periods,2);
  Periods[0,1]:='Start Date 1';
  Periods[0,2]:='End Date 1';
  Periods[1,1]:='Start Date 2';
  Periods[1,2]:='End Date 2';
END.