Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Programm hängt beim Programmstart


motion - Di 26.01.16 23:24
Titel: Programm hängt beim Programmstart
Wir stellen an mehreren Dutzend Fertigungsarbeitsplätzen verschiedene Dokumentationen in Form von PDF Dateien & HTML Seiten zur Verfügung.
Dafür verwenden wir seit Jahren ein eigenes Miniprogramm, das auf der TWebBrowser Komponenten basiert und letztendlich den InternetExplorer so kapselt und einschränkt, das die Anwender nicht "ausbrechen" können und im Doku-System "gefangen" sind ("Intranet Browser").
Alles super soweit.
Vor einigen Monaten haben wir in der Fertigungs und auf allen Büro-PC den Wechsel von IE8 nach IE11 vollzogen. Seitdem beobachten wir überall gehäuft das folgende Problem:
Bei Starten des Intranetbrowsers erscheint das Formular, aber das Programm reagiert nicht mehr ("keine Rückmeldung"). Die CPU Last ist niedrig und es passiert nichts mehr. Kann man stundenlang so stehen lassen.
Im Taskmanager das Programm abgeschossen und noch mal versucht. Manchmal geht es dann, manchmal braucht es noch einen 3. oder 4. Versuch bevor es klappt.
Das kommt auch vor, wenn man das Programm in der IDE compiliert und startet.
Kennt jemand diesen Effekt und hat eine Idee was hier los ist bzw. wie man das Problem gelöst kriegt? An den Startseiten kann es nicht liegen die variieren sehr stark (html Datei auf dem Share, Seite auf dem Sharepoint, .mht Seite auf dem Filesystem etc.) und da ist keine Gemeinsamkeit hervorgetreten.

Umgebung:
-Win 7 Enterprise bzw. Professional (32 und 64 Bit)
-Delphi XE7 32-Bit
-IE11 (vorher beim IE8 gab es keine Probleme)


icho2099 - Mi 27.01.16 08:28

Vielleicht hilft der Kompatibilitätsmodus dir weiter


motion - Mi 27.01.16 18:50

Die Kompatibilitätsmodi helfen nicht weiter. Haben wir schon alle durchprobiert.


mandras - Mi 27.01.16 19:21

Für Darstellung von PDF/XLS/DOC etc im Delphi-Programm verwenden wir
JamFilePreview.

Diese benutzt die Preview-Schnittstellen der im System registrierten Dateiformate.
Alles was der Explorer als Preview darstellen kann kann so im Delphi-Programm gezeit werden.


motion - Mi 27.01.16 19:47

Schwierig das ohne einen Browser zu machen:
-Für Dateien vom Sharepoint kommt automatisch eine WebApp zur Anzeige (Word, Excel, Powerpoint), falls das zugehörige Office Programm nicht installiert ist.
-Das Menüsystem/Verknüpfungen stammt aus MHT Dateien

Alternative Browser sind auch schwierig (embedded Firefox oder Chrome), denn solche Software wollen wir noch noch auf ca. 75 Fertigungsplätzen ausrollen und updaten.


Martok - Mi 27.01.16 20:19

"Hängt" der externe Code, oder irgendwas in eurer Anwendung? Ich arbeite auch grade damit (portieren/erweitern von altem Code), und hatte das Problem mit Warteschleifen die auf ReadyState pollen. Da fliegt einiges an altem Code rum, der auf bestimmte Werte prüft. Der IE11 ist so schnell, dass die Anwendung die Abbruchbedingung da verpassen kann.


motion - Mi 27.01.16 20:27

Da werde ich morgen noch mal gezielt "angreifen" um zu ermitteln, wo oder in welcher Funktion das System hängen bleibt.
Blöd nur: auf meinem PC ist das Problem nicht reproduzierbar, aber auf einem anderen, bei dem aber keine XE7 IDE installiert ist.


jaenicke - Mi 27.01.16 22:05

Eurekalog oder madExcept können solche Hänger erkennen und erzeugen dann, wenn das in den Optionen eingestellt ist, ein Log inkl. Stacktrace.

Wenn der andere PC im Netzwerk erreichbar ist, sollte der Remotedebugger weiterhelfen.

Und aus den Turbo Debugger Debuginformationen lassen sich mit entsprechenden Tools auch .dbg Dateien erzeugen, mit deren Hilfe der Process Explorer auch die Stacktraces anzeigen kann.