AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt
Thema durchsuchen
Ansicht
Themen-Optionen

Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

Ein Thema von AuronTLG · begonnen am 16. Dez 2020 · letzter Beitrag vom 15. Mär 2021
Antwort Antwort
Seite 1 von 2  1 2      
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#1

Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 09:15
Delphi-Version: 10.4 Sydney
Moin,

ich habe ein seltsames Problem:

Ich bekomme den Runtime Error 216 nach dem Schließen, aber nur dann, wenn ein OpenDialog oder SaveDialog ausgeführt wurde.
Das Programm wird durch Schließen der Hauptmaske beendet, kein ExitProcess o.Ä., bezüglich Delphi Versionen sowohl in 10.3.3 als auch 10.4.1 nachvollziehbar. ExitProcess unterbindet das Ganze logischerweise.
Weiterhin ist es unerheblich, wie der Dialog gehandhabt wird. Ob nun die Komponente in der Designeransicht auf der Form liegt oder nur im Quellcode erzeugt wird macht keinen Unterschied.
Was damit genau gemacht wird ist ebenfalls unerheblich. Ich hab zum Testen einen OpenDialog implementiert, der nichts weiter tut als ne ShowMessage mit dem FileName auszugeben und das reicht bereits.

Was der Runtime Error 216 aussagt ist mir klar, nur ergibt der Zusammenhang mit den Dialogs überhaupt keinen Sinn für mich. Wenn jemand das Problem schonmal hatte oder nen Ansatz weiß wäre das sehr hilfreich.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 11:13
Mit dem Ausführen des Open/Save-Dialogs werden alle im Windows Explorer registierten Extensions geladen.
Ich vermute mal das eines davon nicht in einem Delphi/VCL-Programm lauffähig ist, weil es irgendwelchen Mist baut.

Hatte auch mal Probleme mit einem (hoffnungslos veralteten) Plugin aus dem Corel-Umfeld.
Windows Vista - Eine neue Erfahrung in Fehlern.

Geändert von Bernhard Geyer (16. Dez 2020 um 11:15 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 11:25
Wenn es an veralteten Shell Extensions liegen sollte, dann würde ich vorschlagen, dass du mal versucht, diese nacheinander mit den Sysinternals Autoruns zu deaktivieren. Mit Windows 10 kann man ja recht gut den Windows Explorer per TaskManager neu starten. Wenn du aber auf Nummer Sicher gehen willst, dann kannst du auch den Rechner komplett rebooten.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#4

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 11:28
Hmm...

Ich habe es bei mehreren Programmen nachvollziehbar, aber es ist kein grundlegendes Problem.
Zum einen kann ich in einem kleinen Testprogramm problemlos nen Dialog öffnen, ohne dass der Runtime Error kommt.
Zum anderen gibt es ein paar Forms mit Dialogs, die den Runtime Error am Schluss nicht auslösen.
Haben die Open/Savedialogs Attribute/Einstellungen, die irgendeinen Einfluss darauf haben? Optionen habe ich mal verglichen, scheinen aber keine Auswirkungen darauf zu haben.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 12:29
kann meherer Ursachen habe.
Hast du evtl. eine TWebbrower der nicht im IE7-Modus laufen muss?
Hast du evtl. irgendwas mit DirectX?
...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#6

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 13:12
Neue Erkenntnis:
Problem tritt nur mit TSaveDialog & TOpenDialog auf. Die neueren TFileOpenDialog & TFileSaveDialog lösen es nicht aus.
Damit hätte ich zumindest schonmal nen Workaround. Die Komponenten sollte ich ja sowieso mal austauschen in Anbetracht der Tatsache, dass die Letzteren deutlich moderner sind.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#7

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 13:42
Problem tritt nur mit TSaveDialog & TOpenDialog auf. Die neueren TFileOpenDialog & TFileSaveDialog lösen es nicht aus.
Interessant ist aber, dass die intern genutzten Dialoge (genutzte WinAPI) bei Beidem im aktuellen Delphi identisch sind,
außer Du hast ofOldStyleDialog benutzt oder NewStyleControls auf False gestellt.

Wenn, dann kann es ja nur noch bei der Weiterleitung von der alten Klasse auf neue API einen Fehler geben, wie z.B. ein Interface, welches nicht freigegeben wird.


Da man WinXP/9x eh nicht mehr unterstützen will, gibt es aber sowieso keinen Grund immernoch die "alten" Klassen zu benutzen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Dez 2020 um 13:46 Uhr)
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#8

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 14:03
Ich habe eben mal rumprobiert, nachdem ich unter Anderem diesen Link hier gefunden habe.

Komischerweise scheint das bei mir aber nicht so zu funktionieren wie dort beschrieben:
Der Dialog, den ich durch expliziten TFileOpenDialog erhalte, ist definitiv der Moderne (mit Vorschau und Suche etc) im Gegensatz zu dem Alten, den ich durch TOpenDialog erhalte, auch wenn die im Link beschriebenen Bedingungen eingehalten werden.
TOpenDialog gibt mir immer den alten (zumindest optisch), ganz egal was ich tue.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
239 Beiträge
 
Delphi 12 Athens
 
#9

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 14:17
Okay, so wie es aussieht ist mein Styling dafür verantwortlich...
Sobald das Programm mit TStyleManager.TrySetStyle/SetStyle gestylt wurde, rufen die TOpenDialogs den alten auf. Ohne Stil rufen sie den neuen auf.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.116 Beiträge
 
Delphi 12 Athens
 
#10

AW: Runtime Error 216 beim Schließen des Programs nur wenn Save/Opendialog ausgeführt

  Alt 16. Dez 2020, 14:54
Delphi-Quellcode:
function TOpenDialog.DoExecute(Func: Pointer; ParentWnd: HWND): Bool;
...
begin
  if (Win32MajorVersion >= 6) and UseLatestCommonDialogs and
     not (TStyleManager.IsCustomStyleActive and (shDialogs in TStyleManager.SystemHooks)) and
     IsNewCommonCtrl and (Template = nil) and IsAppThemed and
     not (Assigned(FOnIncludeItem) or Assigned(FOnClose) or Assigned(FOnShow)) then
  begin

    // über TFileDialogWrapper den TFileOpenDialog verwenden

    Exit;
  end;
  
  // das die alte API benutzen (eventuell noch durch NewStyleControls das OFN_EXPLORER deaktivert)

end;
Eventuell hilft shDialogs in TStyleManager.SystemHooks ??
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Dez 2020 um 14:59 Uhr)
  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 01:33 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