AGB  ·  Datenschutz  ·  Impressum  







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

Try finally Code Blöcke

Ein Thema von DelphiManiac · begonnen am 16. Feb 2007 · letzter Beitrag vom 16. Feb 2007
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Try finally Code Blöcke

  Alt 16. Feb 2007, 10:54
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

Folgendes Konstrukt habe ich:
Delphi-Quellcode:
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;
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).
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Try finally Code Blöcke

  Alt 16. Feb 2007, 10:56
Dann verwende besser Try<Typ>To<Typ>()!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Try finally Code Blöcke

  Alt 16. Feb 2007, 10:58
Ein finally-Block wird immer ausgeführt, auch wenn im try-Block ein exit steht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#4

Re: Try finally Code Blöcke

  Alt 16. Feb 2007, 10:59
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

Danke euch trotzdem.

**CLOSE**
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#5

Re: Try finally Code Blöcke

  Alt 16. Feb 2007, 10:59
Zitat von DelphiManiac:
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
Warum probierst du es nicht einfach aus?

Delphi-Quellcode:
  try
    ShowMessage('try');
    if (1 = 1) then
      Exit;

    ShowMessage('try 2');

  finally
    ShowMessage('finally');
  end;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#6

Re: Try finally Code Blöcke

  Alt 16. Feb 2007, 11:50
@Luckie:

Hi, ja du hast Recht, siehe mein 2. Posting.
Wieder was dazu gelernt..
Danke dir trotzdem.
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:55 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