5

パスカルで一連のレコードを作成する方法があるかどうか疑問に思いました。私はインターネット全体を見ていますが、これは不可能だと信じています。

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

  TSetOfRecord = set of TRecord;         
4

2 に答える 2

5

はい、集合メンバーが序数型でなければならないというのは不可能です。私が覚えている限りでは、限られた数のメンバーしか持つことができず、255 人がベルを鳴らします。

メンバーの一意性を定義するものは明確ではありませんが、記録よりもはるかに多くの組み合わせがあるようです。

于 2013-02-16T00:21:17.497 に答える
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] の代わりに、事前に宣言された定数配列を使用できます。

于 2013-02-17T08:17:07.880 に答える