パスカルで一連のレコードを作成する方法があるかどうか疑問に思いました。私はインターネット全体を見ていますが、これは不可能だと信じています。
type
TRecord = record
StrField: string;
IntField: Integer;
end;
TSetOfRecord = set of TRecord;
パスカルで一連のレコードを作成する方法があるかどうか疑問に思いました。私はインターネット全体を見ていますが、これは不可能だと信じています。
type
TRecord = record
StrField: string;
IntField: Integer;
end;
TSetOfRecord = set of TRecord;
はい、集合メンバーが序数型でなければならないというのは不可能です。私が覚えている限りでは、限られた数のメンバーしか持つことができず、255 人がベルを鳴らします。
メンバーの一意性を定義するものは明確ではありませんが、記録よりもはるかに多くの組み合わせがあるようです。
「レコードのセット」は意味がありません。「レコードのコレクション」という意味だと思います。その場合は、複数の方法で実装できます。
私がお勧めするのは、「オープン配列」を使用することです(「動的配列」とは異なります)。
独自のルーチンをいくつか作成する必要があります。その 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] の代わりに、事前に宣言された定数配列を使用できます。