AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aktion ausführen direkt nach Application.Run

Ein Thema von xaromz · begonnen am 10. Jul 2006 · letzter Beitrag vom 10. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:34
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
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:38
Wie wäre es im OnCreate oder OnShow-Event deines Hauptformulares?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:40
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:40
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.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:41
Zitat von Luckie:
Wie wäre es im OnCreate der Form?
Liegt OnCreate nicht vor Application.Run ?
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:47
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
Frank Reim
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:49
Hallo,
Zitat von sh17:
Zitat von Luckie:
Wie wäre es im OnCreate der Form?
Liegt OnCreate nicht vor Application.Run ?
Ja.

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 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 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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:50
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 10:59
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 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.
Sven Harazim
--
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Aktion ausführen direkt nach Application.Run

  Alt 10. Jul 2006, 11:03
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
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