Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: FormCreate(Sender); - undefinierter Bezeichner?

  Alt 28. Sep 2008, 07:25
Man könnte z.B. statt der nichtssagenden Zahl 7 die dafür vorgesehene Konstante nutzen. Da hast du es dir allerdings unbewusst etwas schwieriger gemacht, weil du Application.MessageBox() benutzt, welches in sich die MessageBox-Funktion der user32.dll aufruft, und die Rückgabewerte stehen, wie bei Win-API Dingen üblich, nicht direkt so in der Delphi-Hilfe, sondern müssten im msdn nachgeschlagen werden. In diesem Fall gibt es die Konstante "IDNO" welche für diesen Fall gedacht ist (und oh wunder, 7 ist).
Die VCL-Variante heisst MessageDlg() und findet sich in der Unit Dialogs.pas. Auch dort gibt es einen Enum-Type der die möglichen Rückgabewerte bezeichnet. Da dort im Grunde nur ein neues Formular erzeugt und modal angezeigt wird, gelten hier die ModalResult Konstanten, im Falle eines Klicks auf [Nein] wäre dies dann "mrNo". DAS wäre der konsequente Weg in einer VCL Anwendung.

Auch ist es etwas unschön, dass du noch Code hinter dem möglichen Close() hast. Den solltest du in einen else-Zweig der Abfrage davor packen, damit besser ersichtlich ist, dass das nur dann noch ausgeführt wird, wenn Close() nicht statt fand. Funktional ändert das zwar nichts, aber es ging ja um Eleganz. Es gehört generell zum "guten Ton" Code hinter einem Close, Exit, Continue usw. in einen alternativen Konditional-Zweig zu packen, da man sich sonst wieder der verpönten "Goto-Mentalität" annähert, und es einfach den Lesefluss erleichtert wenn man den Code durchgeht (besonders wenn man nicht selbst der Autor ist, oder man sich den Code nach 3 Jahren mal wieder anschaut).
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat