![]() |
In Set or Not in Set? Frage zu Set.
Guten Morgen DP User!
Mal wieder eine Anfängerfrage. (Ich habe in handbüchnern, Delphi Hilfe und Goggle gesucht, konnte die Angaben nicht umsetzen, weil das Beispiel dafür fehlte.) Es sei gegeben: Wenn "Ch" im Set "set1" ist, dann "True" sonst "False".
Delphi-Quellcode:
Meine Frage:
Function IsOk(Ch:Char):Boolean;
TYPE TIntSet = set of char; VAR Set1:TIntSet; begin Set1:=[#1..#128,#228,#246,#252,#196,#214,#220,#223]; if ch in set1 then begin Result:=true; Exit; end else Result:=False; end;//Function IsOK //Müsste True anzeigen procedure TForm1.Button1Click(Sender: TObject); begin if IsOk('a') then ShowMessage('True') else ShowMessage('False') ; end; Ich möchte wissen, wenn etwas nicht im Set ist. NOT wie z. B. "if ch not set1 then" funktioniert nicht und '<>' auch nicht. Da mache ich irgendetwas falsch. :gruebel: Wisst Ihr weiter? Beste Grüße Go2EITS |
Re: In Set or Not in Set? Frage zu Set.
Wenn der eine Weg geht ... if c in set then, dann kannst Du die Logik einfach umdrehen: if not (c in set) then ...
|
Re: In Set or Not in Set? Frage zu Set.
not in sollte eigentlich gehen
Notfalls
Delphi-Quellcode:
not (ch in ...)
|
Re: In Set or Not in Set? Frage zu Set.
@mkinzler
Das hatte ich als erstes probiert. Das "not in" geht nicht. (u.v.m.) @Daniel und @Mkinzler Dein " if not (c in set) then ..." funtioniert bestens. Wenn Ihr wüsstest, wie lange ich gesucht habe. Dass man Klammern setzten muss... Darauf wäre ich nie gekommen. Vielen Dank für die schnelle Antwort. :thumb: Eine wichtige Grundsatzfrage geklärt. CU! Go2EITS |
Re: In Set or Not in Set? Frage zu Set.
Zitat:
Warum nicht einfach so?
Delphi-Quellcode:
function IsBlablaChar(const c : Char) : Boolean;
begin result := not (c in [#1..#128, #228, #246, #252, #196, #214, #220, #223]); end; |
Re: In Set or Not in Set? Frage zu Set.
@Elvis
:oops: ähhm...mein Code. Genial! :shock: Die Verwendung von Result ist so natürlich beispielhaft. Was für ein Unterschied zu meinen Code. :thumb: Beste Grüße Go2EITS |
Re: In Set or Not in Set? Frage zu Set.
Delphi-Quellcode:
Gruß Hagen
if Set * [Ch] <> [] then "Ch in Set"
if Set * [Ch] = [] then "Ch not in Set" |
Re: In Set or Not in Set? Frage zu Set.
[EDIT] Überschwang raus.[\EDIT]
Das ist bestimmt nicht mehr zu toppen. Hab es kopiert und probiere ich mal aus. :thumb: Beste Grüße von Go2EITS |
Re: In Set or Not in Set? Frage zu Set.
Wurde der Operator <> für Sets überladen? Wie denn? Also was bewirkt der auf Sets angewandt?
|
Re: In Set or Not in Set? Frage zu Set.
Zitat:
<> ist <>, oder != in php/C-Derivaten... Einfache Ungleichheit :tongue: |
Re: In Set or Not in Set? Frage zu Set.
Und wem Hagens unglaublicher Code noch nicht reicht, kann
![]() |
Re: In Set or Not in Set? Frage zu Set.
Zitat:
(Ich hab zu wenig Schlaf...) |
Re: In Set or Not in Set? Frage zu Set.
Zitat:
SetA * SetB = SetC Ermittelt die Schnittmenge von SetA und SetB. |
Re: In Set or Not in Set? Frage zu Set.
Verstehe... Irgendwie unlogisch, denn eine Multiplikation von Mengen ist normalerweise was anderes...
|
Re: In Set or Not in Set? Frage zu Set.
Es gibt keine Multiplikation von Mengen, oder? Mir sind nur Schnitt, Vereinigung und Subtraktions bekannt.. Eine Negation zwar auch, aber das ist ja "nur" eine Subtraktion der Menge von der Allmenge.
PS: Den Schnitt zweier Mengen kann man nicht nur über das korrekte mathematische Symbol bezeichnen, sondern auch mit einem X. Macht ja auch Sinn. Aber da es keinen X-Operator gibt, und das X auch gern für die Multiplikation geschrieben wird, ham se wohl deshalb das genommen.. :gruebel: |
Re: In Set or Not in Set? Frage zu Set.
Ich glaube, nur an einem praktischen Beispiel kann man Hagens Code testen.
Ich brauche zu lang. Bin gerade mit dem NOT zurecht gekommen. Was ist dann X + Z =Y sollte nicht das die gesamte Menge aus X+y ergeben? Und ist nicht X - Z = Y d. H. Y birgt alle X minus der in Z befindlichen Elemente? Lustig: Hagen weg und wir sind wieder alleingelassen. :-D |
Re: In Set or Not in Set? Frage zu Set.
Zitat:
M*N ist eine Menge von geordneten Paaren (m, n) wobei m Element M und n Element N. |
Re: In Set or Not in Set? Frage zu Set.
Zitat:
Sieh einfach in der Delphi Hilfe nach und ließ dich dort in die Mengen ein. Ich habe nur den Hinweis gegeben das man mit Mengen auch rechnen kann, logisch eigentlich, da es eben Mathematik ist. Gruß Hagen PS: @Hagen! Unbelievable Siehe hier... Danke für den Tipp was "unglaublich" auf englisch heist, wusste ich noch garnicht ;) Naja wie auch meine Programme schreibe ich ja auf Russisch ;) |
Re: In Set or Not in Set? Frage zu Set.
@hagen: Das Du es wußtest war mir klar.
In der Hilfe habe ich nachgesehen u. v. m Die Beispiele sind da ja sooo aussagekräftig. Hab eben nicht studiert. Überschenglich? Sollte etwas scherzhaft sein, aber nicht abwertend. Gute Codes sind selten. [Edit] Text verschlimmbessert.[/Edit] |
Re: In Set or Not in Set? Frage zu Set.
Delphi Hilfe "Mengenoperatoren"
erklärt eigentlich alles. Wenn du dazu noch Fragen hast dann stelle sie hier, ich beantworte sie gerne ;) Gruß Hagen |
Re: In Set or Not in Set? Frage zu Set.
@hagen
Vielen Dank für das freundliche Angebot. :thumb: Ich sehe nochmal unter D7 und TD2006 nach. Aber mein Problem mit not ist soweit gelöst, da habe ich schon ewig getüftelt. Beste Grüße Go2EITS |
Re: In Set or Not in Set? Frage zu Set.
Ähm dumme Frage, hatte ich oben Recht mit der Mengenmultiplikation?
|
Re: In Set or Not in Set? Frage zu Set.
Schulterzucken-Smilie
|
Re: In Set or Not in Set? Frage zu Set.
Code:
wobei Intersection = Schnittmenge ist.
The following operators take sets as operands.
Operator Operation Operand types Result type Example + union set set Set1 + Set2 – difference set set S - T * intersection set set S * T <= subset set Boolean Q <= MySet >= superset set Boolean S1 >= S2 = equality set Boolean S2 = MySet <> inequality set Boolean MySet <> S1 in membership ordinal, set Boolean A in Set1 The following rules apply to +, –, and *. An ordinal O is in X + Y if and only if O is in X or Y (or both). O is in X – Y if and only if O is in X but not in Y. O is in X * Y if and only if O is in both X and Y. The result of a +, –, or * operation is of the type set of A..B, where A is the smallest ordinal value in the result set and B is the largest. The following rules apply to <=, >=, =, <>, and in. X <= Y is True just in case every member of X is a member of Y; Z >= W is equivalent to W <= Z. U = V is True just in case U and V contain exactly the same members; otherwise, U <> V is True. For an ordinal O and a set S, O in S is True just in case O is a member of S. Grüße Klaus |
Re: In Set or Not in Set? Frage zu Set.
Delphi-Quellcode:
Das funktioniert nun schon, auch wenn wir von der Frage, die ja eigentlich beantwortet ist, seit Hagen abschweifen. Und nun, was ist in set3 drin? Wie kann ich es anzeigen?
TYPE
TIntSet = set of char; VAR Set1,set2,set3:TIntSet; begin Set1:=[#1..#128]; set2:=[#228,#246]; set3:=set1*set2; |
Re: In Set or Not in Set? Frage zu Set.
Soweit ich das überblicke, kannst Du nir auf leere oder nicht leere Menge Prüfen
und direkt abfragen ob ein Element in dem Set vorhanden ist. if .. in .. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz