Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleifendurchlauf abbrechen (https://www.delphipraxis.net/50614-schleifendurchlauf-abbrechen.html)

Nightfly 28. Jul 2005 13:30

Re: Schleifendurchlauf abbrechen
 
Naja, das stammt nicht via Copy & PAste aus dem Quelltext, sondern ist, da nur ein kleines Beispiel, gleich im Browser getippt. Werde mich bessern :)

rwachtel 28. Jul 2005 13:32

Re: Schleifendurchlauf abbrechen
 
Zitat:

Zitat von Nightfly
In meinem Späteren Programm weiß ich's aber vorher noch nicht [...]

Bedenke aber, dass mit wachsender Komplexität von Prozeduren und Funktionen Sprunganweisungen wie continue, break und exit besonders mittendrin immer gerne übersehen werden und somit die Wartbarkeit von Code (ein nicht gerade unerhebliches Kriterium für guten Code) stark einschränken. Einzige in meinen Augen zulässige Ausnahme ist das überprüfen einer Bedingung am Anfang einer Prozedur/Funktion:

Delphi-Quellcode:
procedure GanzLangeProzedur(const Bedingung: boolean);
begin
  if (Bedingung = False) then
    exit;

  [ganz lange Berechnungen]
end;
In den allermeisten Fällen gibt es elegantere Lösungen, die vielleicht langweiliger zu lesen sind, aber genau das macht gut wartbaren Code aus.

leddl 28. Jul 2005 13:51

Re: Schleifendurchlauf abbrechen
 
Zitat:

Zitat von Nightfly
In meinem Späteren Programm weiß ich's aber vorher noch nicht, wie gesagt, dies hier ist nur ein einfaches Beispiel, um mein Anliegen zu verdeutlichen. (und in welchem, zugegeben, <> einfacher wäre)

Aber ich frage nochmal: Was ist der Unterschied? So wie du es machen willst, fragst du ab, ob der Wert erreicht ist und übergehst dann die Berechnung. Genauso könntest du die Berechnung eben einfach nur dann ausführen, wenn der Wert nicht erreicht ist. Macht genau das selbe, ist aber einfach zu verstehen und spart Code. Es ist ja nicht nötig, daß du bereits beim Programmieren weißt, welcher Wert übersrpungen werden soll. Irgendwo wirst du den ja speichern, und kannst ihn dann genauso wie in deiner Version abfragen. Wo da was nicht funktionieren soll, leuchtet mir nicht ein...

Nightfly 28. Jul 2005 14:07

Re: Schleifendurchlauf abbrechen
 
Naja, ich kann es dir nun schwer erläutern, aber mir scheint es für diesen Fall weitaus logischer.
Du kannst alles mit "if..then" und "loop(repeat)..until" machen, alle anderen Kontrollstrukturen sind meines Wissens nach redundant, trotzdem gibt es sie (for, while,case,else).

Mit ist klar, das ich jede if Entscheidung nach postitiver Logik auswerten und abarbeiten kann. Aber ebenso kann ich sie nach negativer Logik auswerten, und dann nicht abarbeiten.

Nach den Gesetzen der Logik gibt es immer das Paar (Pseudocode) {IF a = wahr DO} und {IF a = falsch DO NOT}

Es reicht eines von beiden, der bequemlichkeit halber hat man aber beide. Ich würde die Mächtigkeit von Delphi nicht beschneiden, wenn es break und continue nicht gäbe (wenn wir das ausdiskutieren wollen bitte in nem neuen Thread, der beweis wird lang).

Aber ich habe die Mittel, und wenn es MIR(!) offensichtlicher erscheint nutze ich mal das eine, mal das andere.

@rwachtel ja, Sprünge sind fieß, aber genau in dem Fall den du ansprichst nutze ich sie, um Schleifen und Prozeduren am Anfang zu verlassen, und nicht mit unsinnigen Parametern durchzulaufen.

barf00s 28. Jul 2005 14:14

Re: Schleifendurchlauf abbrechen
 
der verfasser dieses threads sollte sich vllt mal die hilfe zu rate ziehen und einfach mal auf break() continue() bzw for und while nen F1 drüggn...
dann ersparen wir uns mutmaßungen über irgendwelche unvollständigen codeschnipsel die von irgendwo her einfach in vorhandenen code eingefügt werden ...

leddl 28. Jul 2005 14:18

Re: Schleifendurchlauf abbrechen
 
Klar ist es letztendlich deine Entscheidung, was du wählst. Nur wie rwachtel es ja schon gesagt hat, wird Code mit breaks, exits und continues immer recht schnell schwer verständlich. Daher sollte man das wirklich nur dann verwenden, wenn es nicht - oder nur sehr schwer - anders geht. Und da dein Problem - zumindest so, wie du es bisher geschildert hast - meiner Meinung nach am einfachsten über "<>" zu lösen ist, hab ich das jetzt halt vorgeschlagen. Ich würds so machen, du mußt natürlich nicht. Nur daß es nicht sinnvoll ist, wollte ich nicht auf mir sitzen lassen :mrgreen:

Nightfly 28. Jul 2005 14:21

Re: Schleifendurchlauf abbrechen
 
@ barf00s
Dieser Post zum jetztigen Diskussionsfortschritt ist in seiner Gesammtheit völlig redundant.

@ leddl
Eben, und bei mir ist es nur schwer und umständlich zu vermeiden. Es war ein Fehler von mir, ein Beispiel anzugeben, welches kaum etwas mit meinem Probblem zu tun hat, sondern einzig und allein verdeutlichen sollte was ich tun möchte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Seite 2 von 2     12   

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