| |
|
|
Nico Madysa |
|
|
| |
|
|
|
Michael Wodrich | Öhhhmm
si on sowohl im IF-partie comme aussi dans allen anderen Zweigen den gleichen Wert benutzt, ensuite serait aussi je ins Schleudern venons...
et chez Funktionsaufrufen fehlt XProfan entier offensichtlich qui Glaskugel - alors appel et regarder quoi dabei heraus venez...
quelle Programmiersprache allez car ici anders avant - et comment oui c'est ca...
Salut Michael Wodrich KompilierenMarqueSéparation |
|
|
|
|
Michael Wodrich | |
|
|
|
Nico Madysa | allô Michael,
so assez chacun Discours, qui mir spontan einfällt, führt qui Ausdrücke dans einem elseif-Zweig seulement aus, si alle Ausdrücke devant faux ergeben avons.
chez den C-artigen Sprachen ist cela automatisch qui le cas, weil en elseif oui justement rien Anderes comme imbriquées Ifs sommes.
Habe aussi plan Python getestet:
a = 0
if a == 0:
print "Division durch Null verboten!"
elif 3 / a > 8:
print "Dieser Zweig wird nie erreicht, da a Null
stürzt pas ab. là la première Condition déjà erfüllt ist, wird qui zweite gar pas seulement getestet. cela analoge Gegenstück sous XProfan stürzt avec einem Division-par-zéro-faute ab. |
|
|
| |
|
|
|
Michael Wodrich | ici arbeitet XProfan alors oui c'est ca anders herum comme C:
- chez den Si-ElseIf fällt XProfan par zum prochain Block - et chez den Select-Cas ist ca chez C qui le cas (c'est pourquoi muss là im Block toujours avec BREAK gestoppt volonté)
Solange qui Bedingungen vollkommen unterschiedlich sommes, fällt es oui aussi niemandem sur, que voici quelque chose aus dem Ruder fonctionne.
dans gewollter forme sollte ca mais seulement chez den einzeiligen CASE(NOT) so son - ici peut ensuite plusieurs ähnliche ou bien gleiche Fälle abgehandelt volonté.
Roland hat's sich oui déjà durchgelesen... |
|
|
| |
|
|
|
RGH | Salut, aussi si pour einem erfolgreichen IF qui comparaison beim darauffolgenden ELSEIF réellement encore einmal fonctionnement wird, wird il toutefois pas ausgewertet. cela est, cela Programme verhält sich comment erwartet et führt seulement den Code pour dem ersten erfolgreichen comparaison aus: KompilierenMarqueSéparation |
|
|
|
|
Nico Madysa | allô Roland,
dass de den entsprechenden Befehlsblöcke seulement qui erste fonctionnement wird, dessen Condition zutrifft, ist bien sûr. Alles autre wäre oui wirklich un Skandal.
Worum es mir viel plus allez, ist, quand oui c'est ca qui Bedingungen ausgewertet volonté. c'est dans deux Situationen important:
1. si une Funktion dans qui Condition steht, qui irgendwelche Nebenwirkungen hat. KompilierenMarqueSéparation
if SomeAPICall()' gibt 0 aus, falls was schief gegangen ist.
print "Juchuu, alles in Ordnung!"
elseif MessageBox("Hat nicht geklappt. Beenden?", "", ~MB_YESNO) = ~IDNO
print "Trotz Fehler weitermachen."
else
print "Programm wird beendet."
end
KompilierenMarqueSéparation marcher dans XProfan pas.
Kurz et bien: dans Si-Elseif-Strukturen halte je es pour très sinnvoll, alle weiteren Bedingungen trop ignorer, sobald une véritable ergibt.
chez boolschen Operatoren halte je es aussi pour sinnvoll, mais là peut qui Meinungen unterschiedlich son.
important ist seulement, dass qui Documentation irgendwo erwähnt, comment XProfan sich verhält. avec cela on pas im Dunkeln tapst. |
|
|
| |
|
|
|
RGH | oui, derzeit wertet XProfan réellement aussi qui anderen Bedingungen aus. c'est mais déjà toujours so gewesen, aussi si es dans qui acte pas notwendig ist et anders sogar probablement quelque chose flotter wäre. (cela fait den entspechenden Delphi-Code dans XProfan arrêt deutlich einfacher. Sorry.) ici ist une Changement mais sûrement possible. Allerdings halte je Code, qui deratige Funktionen avec "Nebenwirkungen" dans Bedingungen ou bien Boolschen Ausdrücken contient pas pour sonderlich übersichtlich.
trop den Boolschen Operatoren: dans Delphi peux on réellement per Compilerschalter einstellen, si toujours alle Argumente ausgewertet volonté ou bien seulement so large, jusqu'à cela Ergebnis feststeht. j'ai es toujours sur "alle Argumente" eingestellt et dans XProfan ist es aussi so realisiert. mais aussi ici wäre es sûrement possible, beide Varianten anzubieten.
je versuche la fois, mir beide Dinge pour qui kommende Version X3 trop merken.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.02.2014 ▲ |
|
|
|
|
Nico Madysa | Alles bien sûr, merci pour qui schnelle Antwort. comment bereits dit, letztendlich sommes beide Vorgehensweisen (vollständige et Kurzschlussauswertung) gangbare Alternativen. mais important ist arrêt, dass qui Programmierer aussi irgendwo par-dessus aufgeklärt wird.
Salut,
Nico |
|
|
| |
|
|
|
RGH | ... et qui l'affaire avec dem ELSEIF wird dans qui prochain XProfan-Version (X3) et dans FreeProfan korrigiert! Sobald un Zweig erfüllt wurde, volonté qui übrigen Bedingungen pas plus abgefragt.
Salut Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 26.02.2014 ▲ |
|
|
|
|
Nico Madysa | Vergiss pas, cela gleiche Verhalten aussi pour Select einzubauen. Hat zwar absolu zéro Anwendungsorientierung, mais cela dernier, quoi wir brauchen, sommes encore plus Inkonsistenzen. |
|
|
| |
|
|
|
RGH | ... et chez SELECT eh bien entsprechend angepasst!
Salut Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 25.09.2014 ▲ |
|
|
|