2013-02-15 114 views
5

我想知道是否有一种方法可以制作一套帕斯卡记录。 我正在寻找所有的互联网,并相信这是不可能的。帕斯卡记录集

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

    TSetOfRecord = set of TRecord;   
+1

pascal中的集合的基本类型是序数。 – 2013-02-16 00:10:56

+0

问问你自己有多大一组所有可能的字符串。 – 2013-02-18 17:41:55

回答

5

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

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

+1

256是一个实现限制,虽然是一个常见的限制。 – 2013-02-16 11:29:25

+1

仍然使用在传统的delphi代码中设置了很多,这通常是您对枚举标志所做的事情的一种整洁描述。当他们没有这样做时,我对C#的男孩感到有点失望。 – 2013-02-16 13:16:15

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(记录1,[RECORD2,RECORD3,RECORD4])

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

+1

一组记录的确有意义。就像在无序的,不加密的唯一成员集合中一样。 – 2013-02-23 17:33:53