帕斯卡的记录集

时间:2013-02-15 23:59:38

标签: pascal

我想知道是否有办法在pascal中创建一组记录。 我正在寻找互联网,并认为这是不可能的。

type    
  TRecord = record
    StrField: string;
    IntField: Integer;
  end;

  TSetOfRecord = set of TRecord;         

2 个答案:

答案 0 :(得分:5)

是的,这是不可能的集合成员必须是序数类型。 据我所知,你只能拥有有限数量的成员,255响铃。

似乎是比你的记录组合更多的组合,虽然不清楚什么定义了成员的唯一性。

答案 1 :(得分:1)

'记录集'没有意义。我猜你的意思是'收集记录'。如果是这种情况,您可以通过多种方式实现它。

我建议使用'开放阵列'(与'动态阵列'不同)。

你需要写几个你自己的例程,其中一个是这样的:

function RecordInCollection(const ARecord: TYourRecord; const ACollection: array of TYourRecord): Boolean;
var
  Index1: Integer;
begin
  Result := False;
  for Index1 := Low(ACollection) to High(ACollection) do begin
    Result := (ACollection[Index1].StrField = ARecord.StrField) and (ACollection[Index1].IntField = ARecord.IntField);
    if Result then Exit;
  end;
end;

并将其称为:

RecordInCollection(Record1,[Record2,Record3,Record4])

或者您可以使用预先声明的常量数组而不是[Record2,Record3,Record4]。