Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Aktion ausführen direkt nach Application.Run (https://www.delphipraxis.net/72958-aktion-ausfuehren-direkt-nach-application-run.html)

xaromz 10. Jul 2006 09:34


Aktion ausführen direkt nach Application.Run
 
Hallo,

ich möchte in meinem Programm ein Anmeldefenster anzeigen. Dieses soll aber erst erscheinen, wenn die Anwendung richtig läuft, also, nachdem Application.Run gestartet wurde.
Bisher führe ich die Anmeldung vorher aus. Nach der Anmeldung kann es sein, dass direkt eine Datei geladen wird. Schlägt hier etwas fehl, rasselt die Exception komplett durch und die Anwendung beendet sich. Ist nicht so schön.

Bevor jetzt jemand kommt und mir erzählt, dass ich doch die Exceptions abfangen soll: Davon gibt's 'ne ganze Menge. Ich kann nicht alle abfangen.

Wie schaffe ich es also, eine Methode auszuführen, direkt nachdem Application.Run gestartet wurde? Gibt es da einen Event?
Ich könnte natürlich einfach einen Timer verwenden, aber die Idee gefällt mir eigentlich nicht so sehr.

Gruß
xaromz

Bernhard Geyer 10. Jul 2006 09:38

Re: Aktion ausführen direkt nach Application.Run
 
Wie wäre es im OnCreate oder OnShow-Event deines Hauptformulares?

Luckie 10. Jul 2006 09:40

Re: Aktion ausführen direkt nach Application.Run
 
Zitat:

Zitat von xaromz
Bevor jetzt jemand kommt und mir erzählt, dass ich doch die Exceptions abfangen soll: Davon gibt's 'ne ganze Menge. Ich kann nicht alle abfangen.

Dann hast du das mit den Exceptions nicht verstanden. Mit einer Exception fängt man unvorhersehbare Fehler ab und nicht jeden Fehler. SWtellt sich also die Frage, warum du so viele Exceptions hast.

Zitat:

Wie schaffe ich es also, eine Methode auszuführen, direkt nachdem Application.Run gestartet wurde? Gibt es da einen Event?
Ich könnte natürlich einfach einen Timer verwenden, aber die Idee gefällt mir eigentlich nicht so sehr.
Wie wäre es im OnCreate der Form?

sh17 10. Jul 2006 09:40

Re: Aktion ausführen direkt nach Application.Run
 
Zitat:

Zitat von xaromz
Bevor jetzt jemand kommt und mir erzählt, dass ich doch die Exceptions abfangen soll: Davon gibt's 'ne ganze Menge. Ich kann nicht alle abfangen.

erzähl ich Dir aber ;-)

Warum kannst Du nicht alle Exceptions abfangen?

Mit

Delphi-Quellcode:
try
  ...
except
  ...
end;
sollte eigentlich alles erwischt werden. Zumal Du die Fehler auch nach .run noch bekommen solltest.


Ansonsten fällt mir nur Application.OnActivate ein. Dort müsstest Du aber einen mehrfachen Aufruf Deiner Funktion abfangen.

sh17 10. Jul 2006 09:41

Re: Aktion ausführen direkt nach Application.Run
 
Zitat:

Zitat von Luckie
Wie wäre es im OnCreate der Form?

Liegt OnCreate nicht vor Application.Run ?

dataspider 10. Jul 2006 09:47

Re: Aktion ausführen direkt nach Application.Run
 
Hi,

ich setzte in solchen Fällen Application.OnIdle z.B. im Constructor des MainForms auf eine Methode.
Diese startet damit erst, wenn das Mainform fertig gezeichnet ist.
In der Methode wird dann Application.OnIdle wieder auf nil gesetzt und der Code ausgeführt.

Cu, Frank

xaromz 10. Jul 2006 09:49

Re: Aktion ausführen direkt nach Application.Run
 
Hallo,
Zitat:

Zitat von sh17
Zitat:

Zitat von Luckie
Wie wäre es im OnCreate der Form?

Liegt OnCreate nicht vor Application.Run ?

Ja.

Zitat:

Zitat von sh17
erzähl ich Dir aber ;-)

Warum kannst Du nicht alle Exceptions abfangen?

Mit

Delphi-Quellcode:
try
  ...
except
  ...
end;
sollte eigentlich alles erwischt werden. Zumal Du die Fehler auch nach .run noch bekommen solltest.

Dann kommt zwar keine Meldung, aber das ist ja nicht Sinn der Exceptions.
Zitat:

Zitat von sh17
Ansonsten fällt mir nur Application.OnActivate ein. Dort müsstest Du aber einen mehrfachen Aufruf Deiner Funktion abfangen.

Nope, falscher Event.
Zitat:

Zitat von Luckie
Dann hast du das mit den Exceptions nicht verstanden. Mit einer Exception fängt man unvorhersehbare Fehler ab und nicht jeden Fehler. SWtellt sich also die Frage, warum du so viele Exceptions hast.

Weil bein einem Programm alles mögliche passieren kann:
- Dateioperationen können schiefgehen.
- Ich lade unbekannte Dateien. Da können falsche Daten drin sein.
- Ich benutze fremde Bibliotheken. Keine Ahnung, was da alles drin passiert.
- Ich lade aus einer Datenbank. Noch mehr Fehlerquellen.
- Das Ganze natürlich übers Netzwerk/Internet.
Es gibt also eine riesige Anzahl an Fehlerquellen. Wenn jetzt aber die Netzwekverbindung nicht klappt, reicht mir eine Exceptionmeldung völlig aus, damit der Anwender weiß, was passiert ist. Dann soll sich aber nicht das Programm verabschieden.

@dataspider: Das hört sich gut an.

Gruß
xaromz

mkinzler 10. Jul 2006 09:50

Re: Aktion ausführen direkt nach Application.Run
 
Zitat:

Liegt OnCreate nicht vor Application.Run ?
Ja.
Application.Run ist ja die Hauptschleife des Programms. Du willst das Anmelde-Fenster also innerhalb dieser Schleife ausführen?
Dann mußt du wohl eine eigne Application-Klasse erzeugen und dort die Run-Methode überladen.
Das Application-Objekt kennt auch einen onException-Event.

sh17 10. Jul 2006 09:59

Re: Aktion ausführen direkt nach Application.Run
 
Zitat:

Zitat von xaromz
Dann kommt zwar keine Meldung, aber das ist ja nicht Sinn der Exceptions.

war ja nur ein hinweis auf das try-except-konstrukt und kein kodierungsvorschlag.

Zitat:

Zitat von xaromz
Weil bein einem Programm alles mögliche passieren kann:
- Dateioperationen können schiefgehen.
- Ich lade unbekannte Dateien. Da können falsche Daten drin sein.
- Ich benutze fremde Bibliotheken. Keine Ahnung, was da alles drin passiert.
- Ich lade aus einer Datenbank. Noch mehr Fehlerquellen.
- Das Ganze natürlich übers Netzwerk/Internet.
Es gibt also eine riesige Anzahl an Fehlerquellen. Wenn jetzt aber die Netzwekverbindung nicht klappt, reicht mir eine Exceptionmeldung völlig aus, damit der Anwender weiß, was passiert ist. Dann soll sich aber nicht das Programm verabschieden.

wenn man sowieso nicht weiss, was alles für Exceptions kommen können, braucht man doch auch nicht zu differenzieren. Das sind dann solche Fehlermeldungen wie "Es ist ein Fehler aufgetreten..." die Folge.

Die Arbeit wird man sich also machen müssen, alle Exceptions einzeln abzufangen, bzw. zumindest den Exception-Classname anzeigen. Da hilft es auch nicht, den Code nach Application.Run zu verschieben.

marabu 10. Jul 2006 10:03

Re: Aktion ausführen direkt nach Application.Run
 
Hallo.

In meinen Anwendungen, welche auf Datenbanken zugreifen, muss die Anmeldung aus Sicherheitsgründen erfolgen, noch bevor ein Datenmodul oder gar die MainForm instanziiert wurde. Nur so als Denkanstoß.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr.
Seite 1 von 2  1 2      

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