![]() |
if NOT in [..]
Moin!
Ich möchte im IF eine Gruppe negieren. Konkret möchte ich wissen, ob ein Datenbankstatus inaktiv ist oder nicht.
Delphi-Quellcode:
if Query1.State NOT IN [dsInActive] then Query1.Close;
Der Compiler meldet: [dcc32 Fehler] FMain.pas(158): E2066 Operator oder Semikolon fehlt [dcc32 Fehler] FMain.pas(158): E2015 Operator ist auf diesen Operandentyp nicht anwendbar Ich könnte fragen, ob einer der anderen Status aktiv ist, aber eigentlich wollte ich nicht alle Status hinschreiben .. ich kann auch positiv abfragen und das Schließen der Query in den ELSE Zweig legen, aber das finde ich nicht schön. Kann mir das jemand verraten warum das nicht geht? Grüße Rolf |
AW: if NOT in [..]
Delphi-Quellcode:
if NOT (Query1.State IN [dsInActive]) then Query1.Close;
|
AW: if NOT in [..]
Delphi-Quellcode:
if not ( foo in bar )
then ... |
AW: if NOT in [..]
Das ging ja schnell! :-D
Hallo nahpets, Zitat:
und hallo Sir Rufo, Du kannst es einfach! :thumb: Funzt! Danke und ein schönes WE! Rolf |
AW: if NOT in [..]
Und das obwohl nahpets das Gleiche meinte wie ich ... nur ich war schreibfaul und habe es allgemein gehalten.
Konkret muss es so lauten, denn
Delphi-Quellcode:
ist das Set
Query1.State
Delphi-Quellcode:
if not ( dsInActive in Query1.State )
then ... |
AW: if NOT in [..]
Jaja, das ist wieder mein typischer Fehler, zuerst mache ich das so:
Delphi-Quellcode:
und immer erst im zweiten Anlauf richtigrum:
if NOT (Query1.State IN [dsInActive]) then Query1.Close;
Delphi-Quellcode:
. Wann nur werde mir das merken?
if NOT (dsInActive in Query1.State) then Query1.Close;
Aber eigentlich müsste das hier doch auf viel einfache gehen:
Delphi-Quellcode:
if query.Active then query.close;
|
AW: if NOT in [..]
ähm
Delphi-Quellcode:
if NOT (dsInActive IN Query1.State) then Query1.Close;
wird bei mir aber nicht compiliert ... nur die erste Version war in Klammern dann ok. @nahpets: da hast Du recht! (Query1.Active) |
AW: if NOT in [..]
Damit du auch das Warum verstehst:
Es gibt eine Reihenfolge, in der Operatoren ausgewertet werden. (steht auch in der OH) Die unären Operatoren ala NOT oder die "Vorzeichen" + und - haben die höchste Prioriotät und werden immer zuerst ausgewertet. Somit macht der Compiler implizit ein
Delphi-Quellcode:
daraus, was der Compiler natürlich nicht für richtig erachtet.
if (not dsInActive) in Query1.State then
Schön wäre es da auch, wenn Pascal z.B. Doppeloperatoren (ein Operator aus mehreren Wörtern) ala
Delphi-Quellcode:
unterstüzen würde, oder z.B. NAND und NOR.
if dsInActive not in Query1.State then
|
AW: if NOT in [..]
Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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