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