Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm beim Errorhandler anhalten (https://www.delphipraxis.net/71069-programm-beim-errorhandler-anhalten.html)

backdraft 8. Jun 2006 12:03


Programm beim Errorhandler anhalten
 
Hallo zusammen,

ich habe einen Errorhandler programmiert, der sich meldet, wenn ein Fehler auftritt.

Jetzt habe ich das Problem, das alle Timer weiter laufen. Dabei kann es mir passieren, dass die Fehler immer wieder kommen.

Wie kann ich das Programm in einen Zustand bringen, das das Programm nichts mehr macht ausser auf meinen OK Button zu warten?

Oliver

himitsu 8. Jun 2006 12:20

Re: Programm beim Errorhandler anhalten
 
Hast du eine "normale MessageBox verwendet?
Diese behandelt anscheinend irrgendwie die Windowsnachrichten des Hauptthreads, wärend gewartet wird ... du mußt also estwas anderes verwenden, was diese WindowsBotschaften nicht behandelt.

Solange keine botschaften behandelt werden, bleiben auch alle Timer stehen (sobald ihre Zeit abgelaufen ist), denn das Timerereignis wird über Botschaften abgearbeitet.

backdraft 8. Jun 2006 13:24

Re: Programm beim Errorhandler anhalten
 
Ich habe eine Form erzeugt und die mit ShowModal angezeigt!

himitsu 8. Jun 2006 14:09

Re: Programm beim Errorhandler anhalten
 
Tut mir ja Leid, aber aus TCustomForm.ShowModal:
Delphi-Quellcode:
...
repeat
  Application.HandleMessage;
  if Application.FTerminate then ModalResult := mrCancel else
    if ModalResult <> 0 then CloseModal;
until ModalResult <> 0;
...
Eine nette Schleife, welche die anstehenden Nachrichten abarbeitet, solange das Formular aktiv ist.

Wende dich lieber direkt an die WinAPI ... nur da kannst du wohl (mit vertrettbarem Aufwand) sichergehen, daß sowas nicht passiert.

backdraft 8. Jun 2006 14:40

Re: Programm beim Errorhandler anhalten
 
lol, so hab ich mir das noch ghar nicht angeschaut... hmmm, macht schon sinn, das er dann das tut, was er tut. ich probier mal ... hehe
danke für den tip.

backdraft 12. Jun 2006 12:55

Re: Programm beim Errorhandler anhalten
 
hmm, ich bekomme es irgendwie nicht hin.
entweder das program zeigt gar nix an, oder die timer laufen :-(

SirThornberry 12. Jun 2006 14:14

Re: Programm beim Errorhandler anhalten
 
ist logich, denn zum Anzeigen deines Dialoges müssen ja auch Paint-Message abgearbeitet werden. Du könntest ein weiteres Programm starten welches die Fehlernachricht anzeigt und auf die Beendigung dieses Programmes warten.

himitsu 12. Jun 2006 14:31

Re: Programm beim Errorhandler anhalten
 
Zitat:

Zitat von SirThornberry
ist logich, denn zum Anzeigen deines Dialoges müssen ja auch Paint-Message abgearbeitet werden. Du könntest ein weiteres Programm starten welches die Fehlernachricht anzeigt und auf die Beendigung dieses Programmes warten.

Also für den Dialog selber wird es nomalerweise/oft nicht benöigt, da die Anzeige des Dialogs von der WinAPI übernommen wird, aber Fenster hinterm Dialog (z.B. die HauptForm) können eventuell was draufhaben, welches die WindowsMessages für's Anzeigen benötigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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