AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Application.Terminate wird einfach ignoriert !! ???
Thema durchsuchen
Ansicht
Themen-Optionen

Application.Terminate wird einfach ignoriert !! ???

Ein Thema von Uwe.F. · begonnen am 31. Jul 2007 · letzter Beitrag vom 31. Jul 2007
Antwort Antwort
Uwe.F.

Registriert seit: 19. Apr 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#1

Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 10:10
Hallo Zusammen,

Application.Terminate heisst doch eigentlich, dass die Applikation beendet wird.
Bei mir nicht

Nach Application.Terminate hagelt es bei mir Schutzverletzungen

Ich habe es erst beim Debuggen gefunden: D7 Enterprise geht einfach über Application.Terminate hinweg ...

http://home.arcor.de/datenquelle/Terminate.jpg

Hat da einer eine Idee?

Beste Grüße,
Uwe F
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von chrisw
chrisw

Registriert seit: 11. Jan 2005
Ort: Schleswig
193 Beiträge
 
Delphi XE8 Professional
 
#2

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 10:14
Application.Terminate ruft nur PostQuitMessage() auf, d.h. es erfolgt keine sofortige Beendigung des Programms, sondern es wird nur ein WM_QUIT in die MessageQueue gelegt.
Christian Wahl
me, myself and I, die lustigen Drei !!
  Mit Zitat antworten Zitat
Benutzerbild von borncrush
borncrush

Registriert seit: 18. Dez 2005
Ort: Berlin
115 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 10:19
Hi,

zwar frage ich mich wieso du nach deinem application.terminate noch Code ausführen möchtest...
aber das sei jetzt erstmal dahin gestellt.

Würde es etwas bringen, wenn du nach Terminate noch ProcessMessages aufrufst??

Delphi-Quellcode:
Application.Terminate; //App beenden
Application.ProcessMessages; //um das Quit-Signal zuverarbeiten
Leider bin ich mich nicht sicher

MfG
Dave
  Mit Zitat antworten Zitat
Uwe.F.

Registriert seit: 19. Apr 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 10:28
Ja, in gewissen Fehlerfällen will ich vorzeitig das Programm beenden.
Der dargestellte "Schnipsel" war nur ein Beispiel zur Demonstration.

Das mit dem Processmessages werde ich mal testen.

Beste Grüße,
Uwe
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 10:49
Hi,

Sämtlicher Code nach Apoplicaton.Terminate wird augfgerufen, bis das Programm im Leerlauf ist... Wenn du also eventuell noch irgendwo eine Schleife abarbeitest, musst du das z. B. so machen:

Delphi-Quellcode:
repeat
  ...
until (a < b) or Application.Terminated;
Ansonsten mache ich es immer so:

Delphi-Quellcode:
if c < 0 then
begin
  ...
  Application.Terminate;
  exit;
end;
Damit auch die aktuelle procedure (oder function) verlassen wird.

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 10:57
Moin Uwe,

Du solltest übrigens, ggf., auch daran denken, dass bei Application.Terminate die OnCloseQuery- und OnClose-Ereignisse nicht ausgeführt werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Uwe.F.

Registriert seit: 19. Apr 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 11:12
Zitat von Christian Seehase:
... dass bei Application.Terminate die OnCloseQuery- und OnClose-Ereignisse nicht ausgeführt werden.
Jau - das könnte die Lösung für meine Schutzverletzungen nach Terminate sein. Insbesondere die für mich nicht sichtbaren OnClose wie z.B. in Komponenten deren Quelltext ich nicht habe ...

Ein Beispiel ist die Einbindung von ADO. Nach Terminate kommem jede Menge Schutzverletzungen (obwohl ADO nur eingebunden ist und nicht benutzt wurde). Kommentiere ich alle ADO-Zugriffe nebst Einbindung in USES aus, geht alles.

Gibt's denn so etwas wie einen kontrollierten Ausstieg mit allen OnCloseQuery- und OnClose-Ereignisse? Bisher sah ich Terminate als solchen an ...

Beste Grüße,
Uwe
Uwe
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 11:39
Moin Uwe,

Close im Hauptformular schliesst die Anwendung.
Zu Schutzverletzungen dürfte es aber auch bei Application.Terminate nicht kommen, denn OnDestroy wird aufgerufen.
Das Hauptproblem dürfte, wie schon mehrfach gesagt, einfach sein, dass nach dem Terminate noch Code ausgeführt wird, was Du durch eine andere Strukturierung vermeiden könntest.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Uwe.F.

Registriert seit: 19. Apr 2005
56 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Application.Terminate wird einfach ignoriert !! ???

  Alt 31. Jul 2007, 14:24
Hallo Kollegen,

es muss wohl an ADO liegen; folgende minimalistische Konstruktion erzeugt den erwähnten Fehler:

Code:
program Project1;
uses Forms, Unit1 in 'Unit1.pas';
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  If not True then Application.Run;
end.
Code:
unit Unit1;
interface
uses Windows, Forms, DB, ADODB, Classes;
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
  private
  public
  end;
var Form1: TForm1;
implementation
end.
Fehlermeldung: sieh Anhang.

Vermutlich muss ich die ADO "irgendwie" stoppen ... hat jemand eine Idee, wie

Gruss,
Uwe
Miniaturansicht angehängter Grafiken
ado_272.jpg  
Uwe
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:37 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