AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"if boolean then if" ersetzen

Ein Thema von cltom · begonnen am 5. Sep 2011 · letzter Beitrag vom 5. Sep 2011
Antwort Antwort
Seite 1 von 2  1 2      
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#1

"if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:29
Delphi-Version: 5
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:32
Ungefähr so:
Delphi-Quellcode:
var
  showzero : boolean;

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

@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

Geändert von jfheins ( 5. Sep 2011 um 09:36 Uhr)
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:33
Hallo,

Delphi-Quellcode:
var
   showzero : boolean;

if (showzero or (not showzero and (y > 0))) then
   showvalue;
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:40
@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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#5

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:45
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 ...

Danke jedenfalls!
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 09:58
Hallo,
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:05
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
Ansgar
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:10
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:16
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#10

AW: "if boolean then if" ersetzen

  Alt 5. Sep 2011, 10:20
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.
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:00 Uhr.
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