![]() |
Application.Terminate geht nicht mehr ?
Hi im Zuge auf meine Umstellung D5 auf XE2 ist mir aufgefallen, das Application.Terminate keine Funktion mehr hat!
Ich will die Application abschießen (Passwort falsch; keine Lizenz usw.) |
AW: Application.Terminate geht nicht mehr ?
Ich bin mir sicher, daß es noch funktioniert.
Wie und wo nutzt du es denn? (doch hoffentlich nicht erst im OnCreate der MainForm) |
AW: Application.Terminate geht nicht mehr ?
Zitat:
VCL oder FMX? |
AW: Application.Terminate geht nicht mehr ?
VCL bei Programmstart d.h. entweder bei Create oder showForm
Ich rufe es auf und die Applikation läuft munter weiter (Passwort falsch, dann habe ich Adminrechte :oops:) |
AW: Application.Terminate geht nicht mehr ?
Das ging ja noch nie so wirklich. Wenn Du sowas machst, solltest Du ein (Application.Terminated) Flag parallel dazu auswerten und noch ablaufenden "Restcode" bedingt ausführen.
|
AW: Application.Terminate geht nicht mehr ?
Delphi-Quellcode:
tut doch im Endeffekt eh nichts anderes als nur eine
Application.Terminate()
Delphi-Quellcode:
-Message zu senden, oder?
WM_QUIT
Wenn ich so etwas habe, dass ich mich nach dem Prüfen von irgendwas eventuell direkt wieder beenden möchte mache ich das generell noch vor
Delphi-Quellcode:
. Ob das eine gute Idee ist weiß ich allerdings auch nicht.
Application.Run()
|
AW: Application.Terminate geht nicht mehr ?
Bestimmt geht es um eine Benutzeranmeldung die ausgelöst durch ein OnAfterOpen einer Benutzertabelle während der Anzeige eines SplashScreens o.ä. erfolgen soll. Schägt die fehl, soll das Program beeendet werden.
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Wenn Die Anwendung läuft geht es, anscheinend verträgt er es nicht beim Create (dort kann/konnte man auch kein Close setzen). Ich werde es nun über einen Timer lösen, der eingreift!
|
AW: Application.Terminate geht nicht mehr ?
Alternativ ein gutes altes ExitProcess(0) :P
|
AW: Application.Terminate geht nicht mehr ?
Oder eine selbstdefinierte Message posten und in deren Handler Anwendung beenden.
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Nochmal das gleiche Thema:
![]() Darin: Wenn du schon "hart" abschießen möchtest, dann besser über Halt: Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
Wieso wird die Anwendung denn überhaupt gestartet, sprich Fenster erstellt usw., wenn das Passwort falsch ist? Viel sinnvoller wäre doch im Projektquelltext die Prüfungen zu machen, sei es dort direkt oder in einem Steuerungsobjekt. Dann brauchst du auch nichts explizit beenden, weil du einfach nur bei richtigem Passwort etwas machst. Und sonst bist du dann am end des Projekts und es ist automatisch beendet... |
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
jaenicke meint es bestimmt so:
Delphi-Quellcode:
program PLM2012;
{$R *.res} begin Application.Initialize; ... If AllesOK then Application.Run; end. |
AW: Application.Terminate geht nicht mehr ?
Zitat:
Aber das Problem ist doch gelöst zu Designtipps werde ich Fragen stellen, wenn ich Tipps brauche :wink: |
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Das ist ein anderer Punkt und das ist klar, das geht wohl jedem in der Praxis immer wieder so.
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
|
AW: Application.Terminate geht nicht mehr ?
Zitat:
![]() MfG pHL |
AW: Application.Terminate geht nicht mehr ?
Das sieht normalerweise so ca. aus:
Delphi-Quellcode:
Natürlich ist das so trivial zu knacken, sprich man müsste das Ergebnis in InitSuccess noch ein wenig verschleiern, mehrfach prüfen, usw., aber als Beispiel reicht das ja.
program Foo;
uses Vcl.Forms, Vcl.Controls, ...; {$R *.res} var LoginForm: TfrmLogin; InitSuccess: Boolean; App: TApplication; begin App := Application; App.Initialize; App.MainFormOnTaskbar := True; LoginForm := TfrmLogin.Create(nil); try InitSuccess := IsPositiveResult(LoginForm.ShowModal); finally LoginForm.Free; end; if InitSuccess then begin App.CreateForm(TfrmMain, frmMain); App.Run; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz