AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Verständnisfrage: IF (Bedingung1 ODER Bedingung1)
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage: IF (Bedingung1 ODER Bedingung1)

Ein Thema von Jim Carrey · begonnen am 18. Okt 2016 · letzter Beitrag vom 19. Okt 2016
Antwort Antwort
Jim Carrey
(Gast)

n/a Beiträge
 
#1

AW: Verständnisfrage: IF (Bedingung1 ODER Bedingung1)

  Alt 19. Okt 2016, 10:27
Delphi-Quellcode:
xxx.Enabled := (Obj.Count = 1) and not VarToBool(Obj.Prop[0].GetVariant('ein Boolean')); // das IMHO Logische
//
Ich kenne es nur so
Delphi-Quellcode:
xxx.Enabled := (Obj.Count = 1) and (not VarToBool(Obj.Prop[0].GetVariant('ein Boolean')));
//
Aber hier sieht man mal wie schön der Compiler alles umänert.
Delphi-Quellcode:
xxx.Enabled := VarAnd(VarFromBool(Obj.Count = 1), VarNot(Obj.Prop[0].GetVariant('ein Boolean'))); // die Idee des Compiler
//
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.343 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verständnisfrage: IF (Bedingung1 ODER Bedingung1)

  Alt 19. Okt 2016, 11:16
Zitat:
Ich kenne es nur so
In Delphi und eigentlich allen anderen Sprachen haben unäre Operatoren immer vor allem anderen Vorrang und werden von rechts nach links aufgelöst.

Also, die Vorzeichen (+/-) kommen immer zuerst, dann sogleich das NOT und erst danach wird der ganze Rest ausgewertet.
(andersrum kann man +/- und NOT eh nicht schreiben, außer man klammert, also ist quasi Beides gleichrangig und kommt "immer zuerst dran")


Ich kenn aber zuviele, die benutzen NOT wie eine Funktion und schreiben das dann auch so.
xxx.Enabled := (Obj.Count = 1) And Not(VarToBool(Obj.Prop[0].GetVariant('ein Boolean')));
geklammert wird das dann auch oftmals
xxx.Enabled := (Obj.Count = 1) And (Not(VarToBool(Obj.Prop[0].GetVariant('ein Boolean'))));
Leerzeichen gibt es nicht und um alles kommt sowieso nochmal 'ne Klammer drum.
xxx.Enabled:=((Obj.Count=1)And(Not(VarToBool(Obj.Prop[0].GetVariant('ein Boolean')))));

Aber hier muß man eh zuviele Klammern machen, denn sonst müsste man ja ein Leerzeichen einfügen, damit es nicht
xxx.Enabled:=(Obj.Count=1)AndNotVarToBool(Obj.Prop[0].GetVariant('ein Boolean')); heißt
Und wenn man schon konsequent alles klammert, dann doch bitte richtig.
xxx.Enabled:=(((Obj.Count)=(1))And(Not(VarToBool(Obj.Prop[0].GetVariant('ein Boolean')))));
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Okt 2016 um 11:26 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 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