Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Try Finally End verlassen bzw. abbrechen

  Alt 30. Mai 2014, 11:45
Hallo,

ich stehe vor folgendem Problem und irgendwie auf dem Schlauch:

In einem sehr einfachen Programm soll beim Klick auf einen Button etwas gemacht werden. Dazu wird der Button zunächst deaktiviert und am Ende wieder aktiviert. Wenn zwischendurch etwas nicht klappt, soll der weitere Code nicht mehr ausgeführt, der Button aber wieder aktiviert werden.
Um es übersichtlich zu haben, möchte ich nicht das ganze verschachteln und - weil vermutlich nicht lege artis - auf ein goto verzichten. Da es sich am Code vermutlich besser erklären lässt, folgendes Beispiel:
Delphi-Quellcode:
Procedure TForm1.BtnStartClick(Sender: TObject);
Const
   DummySpace   ='C:\$space';
Begin
   BtnStart.Enabled:=False;
   MELog.Lines.Clear;
   Try
      MELog.Lines.Append('Step 1: Allocating Memory');
      MELog.Lines.Append('- creating directory "' + DummySpace + '"');
      If (Not CreateDir(DummySpace)) And
         (Not DirectoryExists(DummySpace)) Then
      Begin
         MELog.Lines.Append(' Could not create "' + DummySpace + '".');
         MELog.Lines.Append(' Error was: "' + SysErrorMessage(GetLastError) + '"');
         MELog.Lines.Append(' Opreation aborted.');

         // Hier muss/will ich raus.

      End
      Else MELog.Lines.Append(' success...')

      // Hier nur weiter, wenn Verzeichnis angelegt wurde/existiert

   Finally
      BtnStart.Enabled:=True;
   End;
End;
Wenn Ihr mir sagt, dass es ohne goto nicht geht, dann soll es eben so sein. Eine andere Idee wäre auch, durch eine Division durch Null eine Exception zu produzieren. Aber auch das ist nicht kunstgerecht. Das ist bestimmt total einfach und mir zugegebener Maßen schon fast peinlich diese Frage zu stellen. Aber auch Suchworte wie "abort try finally" und dergleichen brachten mich bislang nicht weiter ...

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat