AGB  ·  Datenschutz  ·  Impressum  







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

wann wird eine If Abfrage verlassen

Ein Thema von bernhard_LA · begonnen am 19. Jan 2015 · letzter Beitrag vom 20. Jan 2015
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

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

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 09:20
Zitat:
If (length(ValueA) = 0) or (length(ValueA) > 0 and ValueA[0] < 1) then
Und dann fehlen hier auch nich ein paar Klammen, denn es müsste ja eigentlich so aussehn
If (length(ValueA) = 0) or ((length(ValueA) > 0) and (ValueA[0] < 1)) then

Und da das Length>0 zwangsläufig True sein muß, wenn Length=0 nicht angeschlagen hat, könnte man es auch weglassen.
If (length(ValueA) = 0) or (ValueA[0] < 1) then


Standardmäßig sollte diese Option besser deaktiviert bleiben und ansonsten nur lokal dort aktiv, für die einen IF-Auswertung, bzw. für die eine Unit, wo es unbedingt aktiv sein muß.
Drum bringt es hier natürlich auch erstmal nichts, wenn man drüber nachdenken würde, was man wie ändern muß, wenn diese Option aktiv wäre. (in mehrere IFs aufteilen)
Also wenn in den Projektoptionen aktiv, dann dort abschalten.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Jan 2015 um 09:24 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 09:43
Warum das in Delphi ein globaler (ziemlich auffälliger) Compilerschalter ist und nicht wie in so ziemlich allen Sprachen ein "&&" bzw "&" habe ich nie verstanden...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 09:56
Warum das in Delphi ein globaler (ziemlich auffälliger) Compilerschalter ist und nicht wie in so ziemlich allen Sprachen ein "&&" bzw "&" habe ich nie verstanden...
Du kannst ihn auch lokal setzen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#4

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 10:45
Warum das in Delphi ein globaler (ziemlich auffälliger) Compilerschalter ist und nicht wie in so ziemlich allen Sprachen ein "&&" bzw "&" habe ich nie verstanden...
&/&& unterscheidet doch (zumindest in C und Konsorten) zwischen Bitarithmetik und boolescher Logik und hat nichts mit short circuit zu tun?
Uli Gerhardt
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 11:02
Ja und dementsprechend kürzt ein "||" doch auch ab während es ein "|" ja gar nicht tun kann?

Code:
#pragma hdrstop
#pragma argsused

#include <tchar.h>
#include <stdio.h>

#include <iostream>

bool someFunc1() {
   return true;
}

bool someFunc2() {
    std::cout << "Jemand rief someFunc2() auf" << std::endl;
   return true;
}


int _tmain(int argc, _TCHAR* argv[])
{
   std::cout
      << "Mit || ist das Ergebnis "
      << (someFunc1() || someFunc2())
      << std::endl;

   std::cout << std::endl;

   std::cout
      << "Mit | ist das Ergebnis "
      << (someFunc1() | someFunc2())
      << std::endl;

   getchar();
   return 0;
}

Ergibt
Code:
Mit || ist das Ergebnis 1

Jemand rief someFunc2() auf
Mit | ist das Ergebnis 1

Falls ich mich jetzt vertue brauche ich echt Urlaub...
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#6

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 11:09
Ja und dementsprechend kürzt ein "||" doch auch ab während es ein "|" ja gar nicht tun kann?
Ach so, kann sein.
Uli Gerhardt
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 09:44
Was ist denn eigentlich ValueA?

Ein String? Dann kann doch das nicht klappen: ValueA[0] < 1

Oder ist das ein Array of Integer oder sowas?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 10:01
Was ist denn eigentlich ValueA?
Ein String kann es nicht sein, da sonst der Compiler gemecktert hätte ... vonwegen der Kompatibilität zwischen Char und Integer.
Und die neuen Strings, in den mobilen Plattformen, sind nun standardmäßig auch 0-basierend.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 10:09
Und was ist mit dem allseits beliebten
if (length(a)>0) and (copy(a,1,1)='H') then bei einem Leerstring würde die vollständige Auswertung nicht so doll sein
Bei einer ganzen Latte von ifs die sich mit einem String beschäftigen wäre eine Aufteilung natürlich sinnvoller (da gibts dann keine vollständige Auswertung mehr):
Delphi-Quellcode:
if length(a)>0 then begin
  if copy(a,1,1)='Gthen..
  if a[length(a)]='\then ...
end;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (19. Jan 2015 um 10:10 Uhr) Grund: Tippfehler en masse
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: wann wird eine If Abfrage verlassen

  Alt 19. Jan 2015, 11:36
Und was ist mit dem allseits beliebten
if (length(a)>0) and (copy(a,1,1)='H') then bei einem Leerstring würde die vollständige Auswertung nicht so doll sein
Nee, knallt natürlich nicht, da Copy die Stringlänge beachtet und weniger zurückgibt, wie verlangt wurde, wenn weniger drin ist.

Kann man also problemlos auf if copy(a,1,1)='Hthen kürzen und ansonsten wäre es auch egal, ob vollständig ausgewertet wird oder nicht.

Hier gäbe es aber Probleme if (length(a)>0) and (a[1]='H') then ,
aber da "standardmäßig" nicht vollsändig ausgewertet wird, ist der Code eigentlich optimaler, da nicht "sinnlos" ein neuer String erstellt und freigegeben wird.
Ein Therapeut entspricht 1024 Gigapeut.
  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 20:40 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