Einzelnen Beitrag anzeigen

Borti

Registriert seit: 11. Okt 2003
151 Beiträge
 
#1

Allgemeines zun Exceptions

  Alt 5. Aug 2004, 10:32
Guten Morgen,
Inzwischen hat sich bei mir eine ganze Reihe Fragen zum Thema Exceptions angesammelt, die ich euch gern stellen würde:
Die erste wäre, ob GetTickCount ein Hardware-Zugriff ist und somit über try...except geschützt werden muss.
Wie viel sollte ich überhaupt in den geschützten Block reinschreiben? Bei meinem Beispiel soll wirklich der Button2 nur frei geschaltet werden, wenn die Konvertierung geklappt hat:
Code:
procedure TForm1.Button1Click(Sender: TObject);
a:integer;
begin
 try
  a:=strtoint(edit1.text);
  Button2.Enabled:=true;
 except
  showmessage('Bitte geben Sie einen Integer-Wert ein.');
 end;
end;
Aber ich könnte ja auch einfach über exit abbrechen:
Code:
procedure TForm1.Button1Click(Sender: TObject);
a:integer;
begin
 try
  a:=strtoint(edit1.text);
 except
  showmessage('Bitte geben Sie einen Integer-Wert ein.');
  exit;
 end;
 Button2.Enabled:=true;
end;
Aber zu welcher von den beiden Methoden würdet Ihr mir raten?

Der Punkt, der mich am meisten beschäftigt, ist der Schutz von TStrings. Die Methode TStringList.create soll ja immer über try...finally geschützt werden, was aber bei meinem Programm nicht möglich ist, da ich TStringList.create im Event Form1.OnCreate und TStrings free im Event Form1.OnClose aufrufe:
Code:
var s:TStrings;

procedure TForm1.FormCreate(Sender: TObject);
begin
 try
  s:=TStringList.Create;
 except
  showmessage('s konnte nicht erzeugt werden.');
  s.Free;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 s.Free;
end;
geht das so, wie ich’s gemacht habe auch in Ordnung?

Was mich auch ein bisschen stutzig macht, ist, dass in der Delphi-Hilfe nicht etwa TStringList.Create sondern TStrings.add geschützt wird. Der Speicher für den TStrings wird doch aber mit create reserviert und mit add nur aufgefüllt und nicht umgekehrt. Warum schlägt dann Borland diese Variante vor?

Zu guter letzt hab ich in der Projektdatei den Code Application.CreateForm(TForm1, Form1) gefunden. Muss ich den nicht auch schützen?

Danke,
Borti
Ich hab's versucht
(auch wenn's nicht so aus sieht)
  Mit Zitat antworten Zitat