![]() |
Try finally Code Blöcke
Hallo,
ich habe ein kleines Problem, ich möchte ein wenig mehr Anwendersicherheit in mein Programm bekommen, so dass mein Programm möglichst viele 'Ausnahmesituationen' meistern kann :lol: Folgendes Konstrukt habe ich:
Delphi-Quellcode:
Ich hole mir 64 Datensätze aus einem Gerät und sperre vorher mein Formular, damit der Benutzer nicht wild herumklicken kann (weis das ist die Hammerschlag Methode (werde mir auch noch was anderes einfallen lassen) aber so probier ich es ersteinmal).
try
Self.Enabled:=False; for I := 1 to 64 do begin if aktSitzung.connected = false then begin exit; end; // Hier habe ich ein exit!!! Get_ProduktOffset(aktPOffset,i); Get_AlarmHH(aktAlarmHH,i); Get_AlarmH(aktAlarmH,i); Get_AlarmL(aktAlarmL,i); Get_AlarmLL(aktAlarmLL,i); JvStringGrid1.Cells[1,i]:=FloatToStrF(aktPOffset,ffFixed,4,2); JvStringGrid1.Cells[2,i]:=FloatToStrF(aktAlarmHH,ffFixed,4,2); JvStringGrid1.Cells[3,i]:=FloatToStrF(aktAlarmH,ffFixed,4,2); JvStringGrid1.Cells[4,i]:=FloatToStrF(aktAlarmL,ffFixed,4,2); JvStringGrid1.Cells[5,i]:=FloatToStrF(aktAlarmLL,ffFixed,4,2); JvProgressBar1.StepBy(1); Application.ProcessMessages; end; finally Self.Enabled:=True; end; Dann könnte evtl. die Verbindung abbrechen, dann will ich dass er sofort den Finally block ausführt!!! Ich prüfe ja oben ob noch eine Verbindung besteht, falls nein springe ich raus aus der Routine, aber dann wird ja mein Finally Block nicht ausgeführt, oder ????? Danke für eure Antworten |
Re: Try finally Code Blöcke
Dann verwende besser Try<Typ>To<Typ>()!
|
Re: Try finally Code Blöcke
Ein finally-Block wird immer ausgeführt, auch wenn im try-Block ein exit steht.
|
Re: Try finally Code Blöcke
Hallo, ich glaube meine Frage hat sich schon beantwortet,
durch dass Application.ProcessMessages, werden ja die Windows-Nachrichten abgearbeitet, das heißt der TimeOut von mir wird erkannt und ein !!! modales Fenster !!! öffnet sich und fragt, ob man nochmal versuchen will zu verbinden, da das Fenster modal aufgerufen wird, wird der Finally Block erst nach dem Schliessen des Fensters aufgerufen. Aber er wird aufgerufen, obwohl ich rausgesprungen bin (soll ja auch so sein :o Danke euch trotzdem. **CLOSE** |
Re: Try finally Code Blöcke
Zitat:
Delphi-Quellcode:
try
ShowMessage('try'); if (1 = 1) then Exit; ShowMessage('try 2'); finally ShowMessage('finally'); end; |
Re: Try finally Code Blöcke
@Luckie:
Hi, ja du hast Recht, siehe mein 2. Posting. Wieder was dazu gelernt.. Danke dir trotzdem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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 by Thomas Breitkreuz