![]() |
Mengenauswertung - Problem!
Delphi-Quellcode:
Diese Quelltextzeile habe ich geschriben, "not in" scheint aber nicht zu existieren! Wie kann man das korrigieren?
if (cb1 in iMenge) and (cb2 in iMenge) and (cb3 in iMenge) (cb4 not in iMenge) and (cb5 not in iMenge) and (cb6 not in iMenge) then showmessage{usw.}
|
Re: Mengenauswertung - Problem!
Delphi-Quellcode:
if (cb1 in iMenge) and (cb2 in iMenge) and (cb3 in iMenge) and not ((cb4 in iMenge) or (cb5 in iMenge) or (cb6 in iMenge)) then showmessage...
|
Re: Mengenauswertung - Problem!
Delphi-Quellcode:
if (cb1 in iMenge)
and (cb2 in iMenge) and (cb3 in iMenge) and not (cb4 in iMenge) and not (cb5 in iMenge) and not (cb6 in iMenge) then begin showmessage{usw.} end; |
Re: Mengenauswertung - Problem!
Und wie sieht es damit aus?
Delphi-Quellcode:
Die Zeile soll bewirken, dass er nur "weiter geht", wenn weder cb1, cb2, cb3, noch wenn cb4, cb5, cb6 gemeinsam in der Menge vorhanden sind.
if not ((cb1 in iMenge)and (cb2 in iMenge) and (cb3 in iMenge)) or not ((cb4 in iMenge) and (cb5 in iMenge) and (cb6 in iMenge))
[P.S. Mit cb1, cb2, cb3 funktioniert es schon!] |
Re: Mengenauswertung - Problem!
Delphi-Quellcode:
if (iMenge * [cb1, cb2, cb3] = [cb1, cb2, cb3])
and (iMenge * [cb5, cb6, cb7] = []) then begin showmessage{usw.} end; // oder if iMenge * [cb1, cb2, cb3, cb4, cb5, cb6] = [cb1, cb2, cb3] then begin showmessage{usw.} end; // bzw. wenn die cb1 bis cb6 aufeinanderfolgend sind // (wie man es aus dem Namen vermuten könnte) if iMenge * [cb1..cb6] = [cb1..cb3] then begin showmessage{usw.} end; |
Re: Mengenauswertung - Problem!
Das klappt aber nicht! Mal davon abgesehen, dass ich diese Routine nicht verstehe...
|
Re: Mengenauswertung - Problem!
Nochmal zum Verständnis: Du hast 6 Checkboxen, von denen nur eine der ersten drei und eine der letzten drei gewählt werden darf? Dann hast Du die falschen Komponenten gewählt, nimm einfach 2 RadioGroups und fertig.
|
Re: Mengenauswertung - Problem!
wie klappt nicht?
und zum Verstehen ... siehe ![]()
Delphi-Quellcode:
{Menge3 = alles was in Menge1 UND in Menge2 enhalten}
Menge1 * Menge2 = Menge3 {Menge3 = alles was in Menge1 ODER in Menge2 enhalten} Menge1 + Menge2 = Menge3 {Menge3 = alles was in Menge1 UND NICHT in Menge2 enhalten} Menge1 - Menge2 = Menge3
Delphi-Quellcode:
resultA := iMenge * [cb1, cb2, cb3]
// resultA enthält nur noch cb1, cb2 und/oder cb3 (soweit diese in iMenge enthalten waren) resultB := resultA = [cb1, cb2, cb3] // resultB ist true, wenn cb1, cb2 UND cb3 enthalten sind ... es also gleich ist resultC := iMenge * [cb4, cb5, cb6] // resultC = siehe ResultA resultD := resultC = [] // resultD ist true, wenn cb4, cb5 UND cb6 NICHT enthalten sind ... es also ebenfalls gleich ist die zweite und dritte variante aus dem vorherigen Post ist nur eine Kombination dieser Operationen/Vergleiche und alles Varianten sollten diesem entsprechen
Delphi-Quellcode:
if (cb1 in iMenge)
and (cb2 in iMenge) and (cb3 in iMenge) and not (cb4 in iMenge) and not (cb5 in iMenge) and not (cb6 in iMenge) then begin showmessage{usw.} end; |
Re: Mengenauswertung - Problem!
ALso was soll die zeile bewirken?!?
Wenn cb1, cb2 und cb3 in der Menge enthalten sind soll nichts passieren! Wenn cb4, cb5, und cb6 in der Menge enthalten sind soll auch nichts passieren![es soll nur weiter gehen wenn das eben nicht der Fall ist] Für die erste Variante funktioniert folgende Lösung:
Delphi-Quellcode:
Ich muss das ganze mit der zweiten Variante allerdings kombinieren, denn in zwei "if not" Prozeduren klappt es nicht!
if FCntCBs = 3 then if not ((cb1 in iMenge)and (cb2 in iMenge) and (cb3 in iMenge))then begin form2.visible:=false;form6.visible:=true; end;
|
Re: Mengenauswertung - Problem!
Die Schnittmenge zweier Mengen erhältst Du durch Multiplikation, das hat himitsu schon richtig beschrieben. Aber ich habe immer noch nicht ganz verstanden, was Du eigentlich willst. Ist es nur dann ein Fehler, wenn entweder
- cb1 und cb2 und cb2 oder - cb4 und cb5 und cb6 enthalten sind? Oder jede beliebige Kombination von der ersten oder zweiten o.a. Zeile? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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 by Thomas Breitkreuz