Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi If Abfrage mit mehreren Logischen Operatoren!? (https://www.delphipraxis.net/48795-if-abfrage-mit-mehreren-logischen-operatoren.html)

richard_boderich 30. Jun 2005 13:14


If Abfrage mit mehreren Logischen Operatoren!?
 
moin jung und mädels,

ich hab ein Problem. kann mir vielleicht einer von euch sagen warum diese If Schleife nicht Funktioniert wie sie soll?

Delphi-Quellcode:
if (typ = 'US AntiAir') or (typ='US AntiTank') or (typ='US Soldier') or (typ='US Sniper') and (Einheitenstatus='Friendly') then image.Picture:=Form1.Inf_gruen.picture;
Ich gruebel da jetz schon ewig dran aber komme einfach nicht weiter. die bedingung arbeitet nur korrekt wenn typ "US Sniper" ist, also dem letzten wert von typ. bei den anderen drei typen liefert die abfrage ein falsches ergebnis.

SO long

Richard

BenjaminH 30. Jun 2005 13:15

Re: If Abfrage mit mehreren Logischen Operatoren!?
 
Was sollte denn eigentlich passieren?
Setze doch einfach ein paar klammern...

Luckie 30. Jun 2005 13:17

Re: If Abfrage mit mehreren Logischen Operatoren!?
 
Eventuell kann man bessert helfen, wenn du uns sagts, was du unter 'nicht funktioniert' verstehst. :roll:

JasonDX 30. Jun 2005 13:17

Re: If Abfrage mit mehreren Logischen Operatoren!?
 
and hat eine höhere Priorität als or
also wird die Operation so ausgeführt:
Delphi-Quellcode:
if (typ = 'US AntiAir') or (typ='US AntiTank') or (typ='US Soldier') or
((typ='US Sniper') and (Einheitenstatus='Friendly')) then
Abhilfe:
Delphi-Quellcode:
if ((typ = 'US AntiAir') or (typ='US AntiTank') or (typ='US Soldier') or ((typ='US Sniper'))
and (Einheitenstatus='Friendly') then

[size=8][Edit]Eine Klammer zu viel...[/edit][size]

Matze 30. Jun 2005 13:18

Re: If Abfrage mit mehreren Logischen Operatoren!?
 
Ich würde sagen, um die ganzen or gehört eine Klammer, je nachdem, auf was sich das and bezieht. Wenn das and zum letzten or gehört, müsste eine Klammer ans Ende.

richard_boderich 30. Jun 2005 13:24

Re: If Abfrage mit mehreren Logischen Operatoren!?
 
ok jungs,


many THX klammernsetzung wars. folgende loesung funtz bei mir

Delphi-Quellcode:
if ((typ = 'US AntiAir') or (typ='US AntiTank') or (typ='US Soldier') or (typ='US Sniper')) and (Einheitenstatus='Friendly') then image.Picture:=Form1.Inf_gruen.picture;

nochmal vielen Dank euch allen´, hab wohl den wald vor lauter baumen nich mehr gesehn. ;)

Bis denne,

euer Richard

Oxmyx 30. Jun 2005 13:38

Re: If Abfrage mit mehreren Logischen Operatoren!?
 
Nebenbei: Abfragen mit Strings auf diese Weise sind sehr ineffizient. Verwende lieber eine lineare Aufzählung, z.B.:
Delphi-Quellcode:
type
  TUnitType = (UT_US_ANTIAIR, UT_US_ANTITANK, UT_US_SOLDIER, UT_US_SNIPER);


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 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