Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   "if boolean then if" ersetzen (https://www.delphipraxis.net/162767-if-boolean-then-if-ersetzen.html)

cltom 5. Sep 2011 09:29

Delphi-Version: 5

"if boolean then if" ersetzen
 
Hej,

(wie) kann ich folgende Abfrage durch eine einfachere logische Verknüpfung ersetzen?

Delphi-Quellcode:
var
  showzero : boolean;

if showzero then
  showvalue
else
  if y>0 then
    showvalue;
Bin nach einigem Probieren noch auf keine Lösung gekommen, um die holprigen if-Abfragen zu umgehen.

danke und gruß
thomas

jfheins 5. Sep 2011 09:32

AW: "if boolean then if" ersetzen
 
Ungefähr so:
Delphi-Quellcode:
var
  showzero : boolean;

if showzero or (y>0) then
  showvalue
Oder habe ich jetzt was übersehen? :gruebel:

@xaromz (unter mir): Deins ist auf jeden Fall identisch mit meinem. Denn wenn showzero wahr ist, ist das Ergebnis der and Verknüpfung irrelevant. Und wenn showzero falsch ist, steht links von dem and ein wahr, damit wird das and überflüssig ;-)

xaromz 5. Sep 2011 09:33

AW: "if boolean then if" ersetzen
 
Hallo,

Delphi-Quellcode:
var
   showzero : boolean;

if (showzero or (not showzero and (y > 0))) then
   showvalue;
Gruß
xaromz

himitsu 5. Sep 2011 09:40

AW: "if boolean then if" ersetzen
 
@xaromz: Theoretisch hast du Recht und dein Code entspricht funktional genau dem ursprünglichen statement, aber praktisch kann man das auf die Version von jfheins zusammankürzen.

cltom 5. Sep 2011 09:45

AW: "if boolean then if" ersetzen
 
Himmel. Eine einfache or hat's getan. Danke!

Meine Konstruktionen waren auch nahe dran an dem, was xaromz gefunden hat (in punkto umständlich), aber dann doch falsch ...

peinlich ... :oops:

Danke jedenfalls!

xaromz 5. Sep 2011 09:58

AW: "if boolean then if" ersetzen
 
Hallo,
Zitat:

Zitat von himitsu (Beitrag 1121740)
Theoretisch hast du Recht und dein Code entspricht funktional genau dem ursprünglichen statement, aber praktisch kann man das auf die Version von jfheins zusammankürzen.

Das kommt immer darauf an, was gewollt ist. Die beiden Lösungen unterscheiden sich fundamental in ihrer Aussage. Wenn die einfache Variante gemeint ist, dann ist das in Ordnung, aber die Aussage, dass die beiden Statements praktisch gleichwertig sind ist grob falsch. So gesehen war auch der Ursprungscode falsch.

Gruß
xaromz

angos 5. Sep 2011 10:05

AW: "if boolean then if" ersetzen
 
Hi xaromz,

magst du mir einmal erlären, wie sich die Aussagen unterscheiden? Ich sehe jetzt erstmal keine Möglichkeit, dass sich das Programm bei der Variante von jfheins anders verhalten sollte als in deiner oder der Ursprungsvariante.


verwirrte Grüße

xaromz 5. Sep 2011 10:10

AW: "if boolean then if" ersetzen
 
Hallo,

das eine Programm ruft die Funktion auf, wenn a) showzero gesetzt ist oder b) y größer Null ist.

Das andere Programm ruft die Funktion auf, wenn a) schowzero gesetzt ist oder b) y größer Null ist, aber showzero nicht gesetzt ist.

Gruß
xaromz

Medium 5. Sep 2011 10:16

AW: "if boolean then if" ersetzen
 
Dann hättest du, genauso wie jfheins, ein xor verwenden müssen, da das bei dir grad so nach "entweder" oder klingt. Es macht an dieser Stelle aber wirklich keinen Unterschied im Ergebnis, das würde es nur wenn unterschiedliche Funktionen in den if- und else-Zweigen aufgerufen würden.

Memnarch 5. Sep 2011 10:20

AW: "if boolean then if" ersetzen
 
Naja..das ursprüngliche konstrukt und die sehr kompakte variante reagieren aber gleich.
Deswegen ist noch die relevanz der zustände zu klären, ich sehe ansonsten auch keinen unterschied.

Ursprünglich:
Wenn showzero gesetzt -> Dann ShowValue
Wenn showzero aber nicht gesetzt und Y wenigstens > Null -> ShowValue

Keiner der beiden zustände schließt den anderen aus. Und wie Medium bereits gesagt(hui RoterKasten^^) wird bei beiden bedingungen dasselbe aufgerufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz