![]() |
Simple If Then Else Frage
Hi.
Gibt es einen Unterschied zwischen:
Delphi-Quellcode:
und
if (StringList[i]='5') or (StringList[i]='-5') then Edit1.Visible:=True
else Edit1.Visible:=False;
Delphi-Quellcode:
also verändern die äußeren klammern irgendetwas oder kann ich mir die sparen?
if ( (StringList[i]='5') or (StringList[i]='-5') ) then Edit1.Visible:=True
else Edit1.Visible:=False; vielen dank schonmal |
Re: Simple If Then Else Frage
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.
|
Re: Simple If Then Else Frage
Viel einfachher:
Delphi-Quellcode:
Edit1.Visible := (StringList[i]='5') or (StringList[i]='-5')
|
Re: Simple If Then Else Frage
Oder
Delphi-Quellcode:
Hat aber mit dem Kern der Frage nichts zu tun.
Edit1.Visible := abs(StrToIntDef(StringList[i],0)) = 5;
|
Re: Simple If Then Else Frage
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:
cu
a and b or c = a and b or c
a and ( b or c ) = a and b or a and c Oliver |
Re: Simple If Then Else Frage
Zitat:
|
Re: Simple If Then Else Frage
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.
|
Re: Simple If Then Else Frage
Zitat:
Und nach einem kurzen Test ist das noch unwichtiger, weil es keinen Unterschied macht. |
Re: Simple If Then Else Frage
Zitat:
|
Re: Simple If Then Else Frage
Leute, Ihr schweift vom Thema ab :zwinker:
|
Re: Simple If Then Else Frage
Stimmt, Papi :mrgreen:
|
Re: Simple If Then Else Frage
in diesem Sinne.
DANKE (danke auch für die optimierung, werde das anwenden...) wurde nur beim schreiben ein wenig unübersichtlich, weil der originalcode ist:
Delphi-Quellcode:
aber nun ist er
if (UdpMsg[i+1]='5') or (UdpMsg[i+1]='-5') then TEdit(FrmPositions.FindComponent('edField' + IntToStr(i))).Visible:=True
else TEdit(FrmPositions.FindComponent('edField' + IntToStr(i))).Visible:=False;
Delphi-Quellcode:
TEdit(FrmPositions.FindComponent('edField' + IntToStr(i))).Visible:=(UdpMsg[i+1][i]='5') or (UdpMsg[i+1][i]='-5');
|
Re: Simple If Then Else Frage
Also ich persönlich finde ja beides ziemlich unübersichtlich :X
|
Re: Simple If Then Else Frage
Delphi-Quellcode:
So in etwa würde ich das machen.
var aEdit: TEdit;
begin aEdit := TEdit(FrmPositions.FindComponent('edField' + IntToStr(i))); if Assigned(aEdit) then aEdit.Visible:=(UdpMsg[i+1][i]='5') or (UdpMsg[i+1][i]='-5'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 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