Delphi SET-Typ verstehen

if ModalResult in [mrYes, mrOk] then ...

Person, die einen Laptop mit Maus verwendet

schwarzrot/E+/Getty Images





Einer der Delphi-Sprache Eigenschaften, die in anderen modernen Sprachen nicht zu finden sind, ist der Begriff der Mengen.

Delphis Art einstellen ist eine Sammlung von Werten derselbenEin Satz wird mit definiert Satz von Stichwort:



Settypen werden üblicherweise mit Teilbereichen definiert.

Im obigen Beispiel ist TMagicNumber ein benutzerdefinierter Unterbereichstyp, der es Variablen des TMagicNumber-Typs ermöglicht, Werte von 1 bis 34 zu empfangen. Einfach ausgedrückt repräsentiert ein Unterbereichstyp eine Teilmenge der Werte in einem anderen ordinalen Typ.



Mögliche Werte des Mengentyps sind alle Teilmengen des Basistyps, einschließlich der leeren Menge.

Eine Einschränkung bei Sets besteht darin, dass sie bis zu 255 Elemente enthalten können.

Im obigen Beispiel ist der Mengentyp TMagicSet eine Menge von TMagicNumber-Elementen – ganze Zahlen von 1 bis 34.

Die Erklärung TMagicSet = Satz von TMagicNumber ist gleich der folgenden Deklaration: TMagicSet = Satz von 1..34.



Legen Sie Typvariablen fest

Im obigen Beispiel die Variablen leeresMagicSet , ein MagicSet und ein anderes MagicSet sind Sätze von TMagicNumber.

Zu Wert zuweisen zu einer Variablen vom Typ Set, verwenden Sie die eckigen Klammern und listen Sie alle Elemente des Sets auf. Wie in:



Hinweis 1: Jede Variable vom Typ Menge kann die leere Menge enthalten, die durch [] gekennzeichnet ist.

Anmerkung 2: Die Reihenfolge der Elemente in einer Menge hat keine Bedeutung, noch ist es sinnvoll, dass ein Element (Wert) zweimal in einer Menge enthalten ist.



Das IN-Schlüsselwort

Um zu testen, ob ein Element ist enthalten in der Menge (Variable) verwenden Sie die IN Stichwort:

Operatoren festlegen

So wie du zwei Zahlen summieren kannst, kannst du eine Menge haben, die die Summe zweier Mengen ist. Mit Sets hat Ihr Event mehr Operatoren:



  • + gibt die Vereinigung zweier Mengen zurück.
  • - gibt die Differenz zweier Sätze zurück.
  • * gibt den Schnittpunkt zweier Mengen zurück.
  • = true zurückgeben, wenn zwei Mengen gleich sind - dasselbe Element haben.
  • <= returns true if the first set is a subset of the second set.
  • >= gibt true zurück, wenn die erste Menge eine Obermenge der zweiten Menge ist.
  • gibt wahr zurück, wenn zwei Mengen nicht identisch sind.
  • IN gibt true zurück, wenn ein Element in der Menge enthalten ist.

Hier ist ein Beispiel:

Wird die ShowMessage-Prozedur ausgeführt? Wenn ja, was wird angezeigt?

Hier ist die Implementierung der DisplayElements-Funktion:

Hinweis: ja. Angezeigt: '18 | 24 |'.

Ganzzahlen, Zeichen, Boolesche Werte

Natürlich sind Sie beim Erstellen von Settypen nicht auf ganzzahlige Werte beschränkt. Delphi-Ordinaltypen umfassen Zeichen- und boolesche Werte.

Um zu verhindern, dass Benutzer alphabetische Schlüssel eingeben, fügen Sie diese Zeile in der hinzu OnKeyPresseines Edit-Controls:

Sets mit Aufzählungen

Ein häufig verwendetes Szenario im Delphi-Code besteht darin, Aufzählungstypen und Mengentypen zu mischen.

Hier ist ein Beispiel:

Frage: Wird die Nachricht angezeigt? Antwort: nein :(

Sets in den Eigenschaften von Delphi-Steuerelementen

Wenn Sie 'fett' auf die in TEdit-Steuerelementen verwendete Schriftart anwenden müssen, verwenden Sie entweder den Objektinspektor oder den folgenden Code:

Die Style-Eigenschaft der Schriftart ist eine Set-Type-Eigenschaft! So wird es definiert:

Daher wird ein Aufzählungstyp TFontStyle als Basistyp für den Mengentyp TFontStyles verwendet. Die Eigenschaft Style der Klasse TFont ist vom Typ TFontStyles - also eine Eigenschaft vom Typ Set.

Ein weiteres Beispiel enthält das Ergebnis der MessageDlg-Funktion. Eine MessageDlg-Funktion wird verwendet, um ein Meldungsfeld aufzurufen und die Antwort des Benutzers zu erhalten. Einer der Parameter der Funktion ist der Buttons-Parameter vom Typ TMsgDlgButtons.

TMsgDlgButtons ist als ein Satz von (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp) definiert.

Wenn Sie dem Benutzer eine Nachricht mit den Schaltflächen Ja, OK und Abbrechen anzeigen und Code ausführen möchten, wenn entweder auf die Schaltflächen Ja oder Ok geklickt wurde, können Sie den nächsten Code verwenden:

Schlusswort: Sets sind großartig. Sätze können für a verwirrend erscheinen Delphi-Anfänger , aber sobald Sie anfangen, Set-Typ-Variablen zu verwenden, werden Sie feststellen, dass sie viel mehr bieten, als es am Anfang klang.