Frage Satz von Datensätzen in Pascal


Ich habe mich gefragt, ob es einen Weg gibt, wie ich in Pascal eine Reihe von Aufzeichnungen machen kann. Ich schaue überall im Internet und glaube, dass das unmöglich ist.

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

  TSetOfRecord = set of TRecord;         

5
2018-02-15 23:59


Ursprung


Antworten:


Ja, das ist unmöglich. Set-Mitglieder müssen ein ordinaler Typ sein. Soweit ich mich erinnere, kann man nur eine begrenzte Anzahl von Mitgliedern haben, 255 läuten eine Glocke.

Es scheint viel mehr Kombinationen zu geben als in Ihrer Aufzeichnung, obwohl es nicht klar ist, was die Einzigartigkeit für ein Mitglied definiert.


5
2018-02-16 00:21



"Satz von Datensätzen" ergibt keinen Sinn. Ich denke, du meinst 'Sammlung von Datensätzen'. Wenn das der Fall ist, können Sie es auf mehrere Arten implementieren.

Ich würde empfehlen, "offene Arrays" zu verwenden (nicht dasselbe wie "dynamische Arrays").

Du müsstest ein paar deiner eigenen Routinen schreiben, eine davon ist:

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;

und nenne es so:

RecordInCollection (Datensatz1, [Datensatz2, Datensatz3, Datensatz4])

oder Sie könnten vordefinierte Arrays anstelle von [Record2, Record3, Record4] verwenden.


1
2018-02-17 08:17