Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Aktuelle Prozedur beenden nur wie? (https://www.delphipraxis.net/66215-aktuelle-prozedur-beenden-nur-wie.html)

daniel987 26. Mär 2006 20:38


Aktuelle Prozedur beenden nur wie?
 
Ich habe bei Delphi ein kleines Problem um die Übersich meines Codes zu verwalten. Und zwar überpfrüfe ich anfangs ob bestimmte Vorraussetzunhen erfüllt wurden falls nicht wird in ein Label eine Fehlermeldung eingetragen.
Nur habe ich dann das Problem, dass die Prozedur dann trotzdem weiter ausgeführt wird oder ich muss alles in einen riesigen else Block schachteln was ich eher suboptimal finde...
gibt es nicht wie in PHP oder C sowas einfaches wie exit oder return?
Oder gibt es nicht schon irgendwas um halt ein Fehlerfenster anzuzeigen und das Programm abzubrechen (Am besten wäre ja diese Standard Windows Fehler Box mit dem shönen Ton und dem Ausrufezeichen)?

Matze 26. Mär 2006 20:45

Re: Aktuelle Prozedur beenden nur wie?
 
Moin

Zitat:

Zitat von daniel987
gibt es nicht wie in PHP oder C sowas einfaches wie exit oder return?

Mit [oh]Exit;[/oh] wird die aktuelle Funktion/Prozedur verlassen.

Zitat:

Zitat von daniel987
Oder gibt es nicht schon irgendwas um halt ein Fehlerfenster anzuzeigen und das Programm abzubrechen (Am besten wäre ja diese Standard Windows Fehler Box mit dem shönen Ton und dem Ausrufezeichen)?

Da gibt es einige Dialoge (das [oh]Exit;[/oh] nach dessen Aufruf nicht vergessen).


Nachtrag: Herzlich willkommen!

simonko 26. Mär 2006 20:47

Re: Aktuelle Prozedur beenden nur wie?
 
du kannst mit "raise" eine exception thrown dann wird die prozedur abgebrochen.
du musst es dann mit try except abfangen und in except schreibst du dann rein was im label ausgegeben werdn soll.

himitsu 27. Mär 2006 11:11

Re: Aktuelle Prozedur beenden nur wie?
 
Um nur eine Prozedure/Funktion abzubrechen, ist das Exit wohl mit am Besten geeignet.


Allerdings nutze ich selber abundzu mal 'ne exception, um mehrere (recursive) Funktionen/Prozeduren zu beenden ... wenn ich mal nicht unbedingt Lust hab, oder es einfasch zu aufwändig wäre dieses auf andere Wege zu lösen :roll:

jbg 27. Mär 2006 12:22

Re: Aktuelle Prozedur beenden nur wie?
 
Exceptions sind, wie deren Name schon sagt, eigentlich kein Instrument für die Programmflusskontrolle, sondern für Ausnahmenzustände gedacht (manchmal auch als Fehler bezeichnet). Zudem verbraucht eine ausgelöste Exception einiges an CPU Zeit, wohingegen ein simples Exit nicht wirklich viel Zeit beansprucht, da es nur den Stack aufräumt und dann ein "ret" durchführt.

Muetze1 27. Mär 2006 12:47

Re: Aktuelle Prozedur beenden nur wie?
 
Naja, ich habe mal gelernt, dass Exceptions das Mittel zur Flusskontrolle in OOP sind. Aber das ist Lehrermeinung/wissen.

simonko 27. Mär 2006 13:18

Re: Aktuelle Prozedur beenden nur wie?
 
@muetze ist es auch.
cpu zeit kannst du reden wenn du in C programmierst. mit OOP ist das sowieso wie es ist..

Luckie 27. Mär 2006 13:25

Re: Aktuelle Prozedur beenden nur wie?
 
Zitat:

Zitat von simonko
@muetze ist es auch.
cpu zeit kannst du reden wenn du in C programmierst. mit OOP ist das sowieso wie es ist..

Hä? Kannst du mal bitte erläutern, was du damit meinst? Meisnt du etwas Codeoptimierung wäre überflüssig weil das Konzept von OOP eh alles wieder zu nichte macht?

simonko 27. Mär 2006 18:01

Re: Aktuelle Prozedur beenden nur wie?
 
ja

himitsu 27. Mär 2006 18:43

Re: Aktuelle Prozedur beenden nur wie?
 
Nur nochmal zu den exceptions, aktuell nutze ich die eh nur zum Beenden der laufenden Prooceduren, wenn ein Fehler aufgetreten und fange die ganz am Anfang per Try-Except wieder auf ... aber wie gesagt, oftmals verwende aucgh ich sowas wie Exit, aber aktuell war mir der Aufwand einfach zu hoch und warum keine Exception, wenn es sich eh um einen Fehler handelt :roll:

Und zu dem OOP, ein bissl Optimierung kann bestimmt nicht schaden, auch wenn ich's nich so wie Luckie übertreibe und alles nonVCL mache ._.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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