AGB  ·  Datenschutz  ·  Impressum  







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

Simple If Then Else Frage

Ein Thema von Cyberstorm · begonnen am 14. Nov 2008 · letzter Beitrag vom 14. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#1

Simple If Then Else Frage

  Alt 14. Nov 2008, 12:24
Hi.

Gibt es einen Unterschied zwischen:

Delphi-Quellcode:
if (StringList[i]='5') or (StringList[i]='-5') then Edit1.Visible:=True
 else Edit1.Visible:=False;
und

Delphi-Quellcode:
if ( (StringList[i]='5') or (StringList[i]='-5') ) then Edit1.Visible:=True
 else Edit1.Visible:=False;
also verändern die äußeren klammern irgendetwas oder kann ich mir die sparen?

vielen dank schonmal
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 12:27
In diesem Falle kannst Du sie Dir sparen. Notwendig werden sie z.B. dann, wenn Du and und or mischen musst, da and einen größeren Stellenwert hat als or.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 12:29
Viel einfachher:
Edit1.Visible := (StringList[i]='5') or (StringList[i]='-5')
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 12:32
OderEdit1.Visible := abs(StrToIntDef(StringList[i],0)) = 5; Hat aber mit dem Kern der Frage nichts zu tun.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 13:35
Ist wie in der Mathematik:
Punktrechnung geht vor Strichrechnung! Also multiplizieren bindet stärker als addieren.
Hier ist das so, dass ein and stärker binded als ein or.

Beispiel:
Code:
a*b + c = a*b + c
a*( b + c ) = a*b + a*c
Code:
a and b or c = a and b or c
a and ( b or c ) = a and b or a and c
cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 14:03
Zitat von Luckie:
Viel einfachher:
Edit1.Visible := (StringList[i]='5') or (StringList[i]='-5')
Eher: Viel häßlicher
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 14:20
Dafür viel performanter. Eine "if" Abfrage erzeugt zwangsläufig einen bedingten Sprung. Sowas kostet Performance, weil der Prozessor im Endeffekt nicht weiß was er cachen soll: Den Code bei "then" oder bei "else". Modernere CPUs haben zwar heuristische Verfahren um zu sehen welcher Sprung "wahrscheinlicher" ist, aber wenn mans vermeiden kann ohne die Codelesbarkeit merkbar zu verschlechtern, sollte man die von Luckie gezeigte Schreibweise wählen.
Fridolin Walther
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 14:23
Zitat von 0xF30FC7:
Dafür viel performanter.
Das ist bei der Frage nach Ästhetik und Übersichtlichkeit irrelevant, und unabhängig davon bei einer Zuweisung an eine Eigenschaft eines VCL-Controls einfach unwichtig.

Und nach einem kurzen Test ist das noch unwichtiger, weil es keinen Unterschied macht.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 14:30
Zitat von alzaimar:
Das ist bei der Frage nach Ästhetik und Übersichtlichkeit irrelevant
Daher auch meine Einschränkung: Falls es die Lesbarkeit des Codes nicht merkbar verschlechtert. Lesbarkeit ist natürlich das Wichtigste überhaupt. Wobei ich persönlich ein if-then-else-Konstrukt deutlich unübersichtlicher finde als so eine einfache Zuweisung. Aber das ist wahrscheinlich sehr subjektiv. Ich wollte letztlich nur auf den negativen "performance impact" aufmerksam machen, der bei solchen Abfragen entstehen kann.
Fridolin Walther
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: Simple If Then Else Frage

  Alt 14. Nov 2008, 14:33
Leute, Ihr schweift vom Thema ab
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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:39 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