AGB  ·  Datenschutz  ·  Impressum  







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

Absturz in Verbindung mit TOpenDialog

Ein Thema von Codehunter · begonnen am 27. Sep 2017 · letzter Beitrag vom 28. Sep 2017
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Absturz in Verbindung mit TOpenDialog

  Alt 27. Sep 2017, 09:22
Moin!

Ich habe einen Kundenrechner (W10x64), bei dem mein Programm häufig aber nicht immer crasht, wenn TOpenDialg geöffnet wird. Es könnte etwas mit diesem älteren Thread zu tun haben, für den es damals aber auch keine Lösung gab. Ich vermute irgendeine Shellextension, Virenscanner, Iconcache o.ä. als Ursache.

Zum Einkreisen des Fehlers wollte ich TOpenDialog.Options + [ofOldStyleDialog] nutzen, da hier viele Shellextensions außen vor gewesen wären. Doch wie mir auffällt, ignoriert Delphi ofOldStyleDialog und zeigt das Öffnen-Fenster immer im neuen Style an. Ist das ein Bug oder mache ich da was verkehrt?

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.051 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Absturz in Verbindung mit TOpenDialog

  Alt 27. Sep 2017, 09:26
Keine Lösung, aber: Ich glaube, ofOldStyleDialog geht nur bei XP, denn die Delphi-Hooks für den TOpenImageDialog gehen auch nicht mehr in neueren Versionen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Absturz in Verbindung mit TOpenDialog

  Alt 27. Sep 2017, 09:31
Ich habe zur Sekunde die Lösung selbst gefunden:
Delphi-Quellcode:
UseLatestCommonDialogs:= FALSE;
if OpenDialog1.Execute then begin
  // ...
end;
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.051 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Absturz in Verbindung mit TOpenDialog

  Alt 27. Sep 2017, 09:37
Richtig, das fiel mit gerade nicht ein. Das macht auch, dass die Bild-Öffnen-Dialoge unter 7 funktionieren, was praktisch sein kann, wenn man eine Vorschau für Dateien implementieren möchte, die Windows nicht kennt.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: Absturz in Verbindung mit TOpenDialog

  Alt 27. Sep 2017, 10:40
UseLatestCommonDialogs:= FALSE;
Alternativ kannst du auch einen der Events OnClose , OnShow oder OnIncludeItem verdrahten, dann werden auch die alten Dialoge verwendet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Absturz in Verbindung mit TOpenDialog

  Alt 27. Sep 2017, 13:45
Was sagt den die Windows-Ereignisanzeige? Bei mir waren hier DLLs aufgelistet die sich als ShellExtension rein gehängt hatten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Absturz in Verbindung mit TOpenDialog

  Alt 28. Sep 2017, 08:47
Ich warte noch auf Kundenrückmeldung der letzten Änderungen. Bei der nächsten Fernwartung schaue ich nach. Auch wenn die Frage im konkreten Fall noch ungeklärt ist: Es kann doch nicht sein, dass Shellextensions seit gut 10 Jahren Delphi-Anwendungen niederknüppeln und sich Emba und MS gegenseitig den schwarzen Peter zu schieben, eine Lösung bisher nicht in Sicht ist und wir uns mit Workarounds wie den ganz alten, aus Windows-95-Zeiten stammenden OldStyle-Dialogen begnügen müssen.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (28. Sep 2017 um 08:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Absturz in Verbindung mit TOpenDialog

  Alt 28. Sep 2017, 10:01
Ich warte noch auf Kundenrückmeldung der letzten Änderungen. Bei der nächsten Fernwartung schaue ich nach. Auch wenn die Frage im konkreten Fall noch ungeklärt ist: Es kann doch nicht sein, dass Shellextensions seit gut 10 Jahren Delphi-Anwendungen niederknüppeln und sich Emba und MS gegenseitig den schwarzen Peter zu schieben, eine Lösung bisher nicht in Sicht ist und wir uns mit Workarounds wie den ganz alten, aus Windows-95-Zeiten stammenden OldStyle-Dialogen begnügen müssen.
Es ist nich Emba, es ist nicht MS schuld und dies schieben sich nicht gegenseitig den schwarzen Peter zu.
Wenn eine DLL im Adressraum deiner Anwendung geladen wird und eine Absturz vollführt, dann ist diese DLL schuld bzw. dann hat der Hersteller der DLL hier nacharbeit zu leisten.
Falls es dem Hersteller egal ist, so wäre eine Idee das Laden der DLL zu verhindern (z.B. durch einen Hook auf die LoadLibrary-WinAPI-Funktion).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Absturz in Verbindung mit TOpenDialog

  Alt 28. Sep 2017, 11:10
Es ist nich Emba, es ist nicht MS schuld und dies schieben sich nicht gegenseitig den schwarzen Peter zu.
Wenn eine DLL im Adressraum deiner Anwendung geladen wird und eine Absturz vollführt, dann ist diese DLL schuld bzw. dann hat der Hersteller der DLL hier nacharbeit zu leisten.
Falls es dem Hersteller egal ist, so wäre eine Idee das Laden der DLL zu verhindern (z.B. durch einen Hook auf die LoadLibrary-WinAPI-Funktion).
Genau das wollte ich eigentlich damit ausdrücken, dass es nicht sein kann dass sich diese zwei den schwarzen Peter zuschieben. Allerdings so ganz aus der Verantwortung will ich Emba auch nicht entlassen. Denn TOpenDialog bildet einen Systemdialog ab, der auch in anderen (Non-Delphi-) Programmen zum Einsatz kommt und dort nicht zu Abstürzen führt.

Genau dann hat man nämlich die Situation, dass die Anwender nur die Wirkung und nicht die Ursache sehen. Mein Programm stürzt ab, während Programm xyz problemlos mit der selben Shellextension läuft. Also muss der (Anwender-) Logik zufolge mein Programm Schuld sein und nicht die Shellextension.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Absturz in Verbindung mit TOpenDialog

  Alt 28. Sep 2017, 11:36
Dumme Idee: Delphi-Prozesse sind ja dergestalt oft "anders" als wie bspw. die FPU-Exception-Masken gesetzt sind. Ob das damit zu tun haben könnte?
  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 21:40 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