Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi SaveDialog.Execute führt zu Delphi-Absturz (https://www.delphipraxis.net/167970-savedialog-execute-fuehrt-zu-delphi-absturz.html)

TheMiller 27. Apr 2012 17:24

SaveDialog.Execute führt zu Delphi-Absturz
 
Hallo,

hab mal wieder ein seltsames Problem. Ich rufe den SaveDialog über Execute auf, dieser erscheint und führt alles korrekt aus. Danach beende ich das Programm und beim Beenden verschwindet das ausgeführte Programm und Delphi "wartet auf Rückmeldung" in einer Endlosschleife. Mir bleibt nur übrig, es zu killen.

Der Dialog wird in einer ganz kleinen Prozedur aufgrufen (kein Thread). Kommentiere ich alles aus dieser Prozedur aus, schließt sich das Programm normal und Delphi "überlebt".

Kommentiere ich alles aus, außer das SaveDialog.Execute, tritt das o.g. Verhalten auf.

Es liegt aber irgendwie an der Exe bzw. dem Projekt. Wenn ich den gleichen, simplen Code in einem neuen Projekt aufrufe, dann klappt alles.

Delphi-Quellcode:
  if (SaveDialog1.Execute) then
  begin
    MessageDLG('ok', mtInformation, [mbOK], 0);
  end;
Könnt ihr mir helfen? Was könnte das nun wieder sein?

Danke im Voraus

haui95 27. Apr 2012 17:34

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Guten Tag,
was genau möchtest du mit dem SaveDialog bewirken ?
Es ist ja eigentlich sinnfrei diesen SaveDialog auszuführen, nur um eine Information in einem Fenster anzuzeigen.
Vielleicht könntest du ein bisschen mehr von deinem Quelltext posten.

Mit freundlichem Gruß

Bernhard Geyer 27. Apr 2012 17:37

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Was passiert wenn das Programm außerhalb der IDE ausgeführt wird?

Falls nur innerhalb der IDE würde ich auf den Virenscanner tippen? Evtl. Avira installiert?

TheMiller 27. Apr 2012 17:40

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hi,

ehm ja - eigentlich wollte ich mit dem SaveDialog schon eine Datei speichern. Nur zu Test-/Debugzwecken habe ich jegliche Code-Zeilen entfernt / auskommentiert, sodass nur diese zwei Zeilen übrig geblieben sind.

Ich wollte damit verdeutlichen, dass es nicht an meinem Code liegt (da dieser ja auskommentiert ist) und der Fehler auch dann auftritt, wenn nur die Methode "SaveDialog1.Execute" aufgerufen wird.

Dies ist aber nur in diesem Projekt so.

Ich starte die Exe, gehe auf exportieren und dann kommt auch gleich die SaveDialog-Zeile. Mehr mache ich nicht.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1163902)
Was passiert wenn das Programm außerhalb der IDE ausgeführt wird?

Falls nur innerhalb der IDE würde ich auf den Virenscanner tippen? Evtl. Avira installiert?

Ehm wow: Außerhalb der IDE funktioniert es. Jetzt bin ich erstaunt. Avira ist installiert, hatte aber nie Probleme in der Hinsicht.

EDIT: Mit ausgeschaltetem Avira (Echtzeitscan deaktivieren) tritt das gleiche - falsche - Verhalten auf.

Danke

haui95 27. Apr 2012 18:02

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hmm…
ich habe bei mir jetzt auch den gleichen Quelltext eingefügt und auf einen Button gelegt, doch komischerweise läuft mein Delphi Programm beim Beenden nicht in den Wald, obwohl sich lediglich dieses Fenster zum Speichern öffnet und noch nicht einmal ein Message Dialog angezeigt wird. Hast du schon einmal versucht Delphi neu zu starten oder ein anderen Quelltext mit dem SaveDialog zu belegen. Probier mal diesen hier:

Delphi-Quellcode:
if SaveDialog1.Execute then
  ShowMessage('Datei: ' + SaveDialog1.FileName)
else ShowMessage('Speichervorgang abgebrochen');

MfG

TheMiller 27. Apr 2012 18:29

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hi,

hab wieder alles auskommentiert und deinen Code eingefügt. Gleiches Verhalten. Ich habe zusätzlich auch mal alles auf den Events onCloseQuery und onClose auskommentiert. Auch das half nicht.

Das Compiler-Fenster schreibt beim Beenden des Programms - an der Stelle an der der Fehler auftritt:

Zitat:

Zitat von Compiler
Modul entladen: MSVCR80.DLL. Prozess xxxxxxxxx.exe (2284)

An dieser Stelle hängt's immer.

haui95 27. Apr 2012 18:44

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hmm…
die msvcr80.dll Datei gehört zur C Runtime Library. Ich weiß jetzt nicht, ob Delphi die Runtimes von Microsoft braucht, um bestimmte Programme ausführen zu können ? Hast du in den uses in deinem Quelltext vielleicht irgendwelche Bibliotheken, die auf die C Runtime verweisen deklariert. Schau einmal nach, ob du dort irgendetwas findest. Vielleicht auch einmal bei deinen installierten Programmen und Updates nachschauen, ob du vielleicht keine Runtimes installiert hast. Aber ich gehe nicht davon aus, dass es daran liegt.
Wie gesagt starte Delphi noch einmal neu, und probiere es noch einmal. Vielleicht auch einmal Delphi mit Administratorrechten starten, sofern du Vista oder Windows 7 hast.

MfG

TheMiller 27. Apr 2012 18:47

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hi,

danke für deine Hilfe. Delphi und den PC etc. habe ich schon mehrfach neu gestartet. Es ist also ein nachhaltiges Problem. Ich dachte erst, dass es an irgendwelchen Speicherlecks liegt, die ich produziere, aber ich finde nichts mit FastMM. Und nach dem Öffnen des Savedialogs bleibt er schon vor dem Anzeigen des FastMM-Resultates hängen, leider.

Ich werde das mal überprüfen und mich melden, wenn ich mehr weiß. vllt. habt ihr/hast du auch noch andere Ideen.

Danke jedenfalls!

hoika 27. Apr 2012 20:11

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hallo,

Zitat:

bleibt er schon vor dem Anzeigen des FastMM-Resultates hängen
Und was ist ohne FastMM4 ?
Schau mal an, wie gross die FastMM4-Datei wird.
Viell. hast du viele Lecks und es dauert beim Beenden halt etwas.
Test2:

SaveDialog1 mal löschen und neu aufs Form ziehen.

Heiko

TheMiller 27. Apr 2012 20:50

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hallo!

Danke für die Ideen, aber daran liegt's auch nicht. Ich bin hinsichtlich der Lecks ein sehr vorbildlicher Programmierer. Meine Software hat kaum Lecks (ein paar von den Indys, aber ok)...

Hab den Fehler gefunden, aber das hilft mir trotzdem nicht. Ereignisanzeige von Windows zeigt folgendes:

Zitat:

Zitat von Ereignisanzeige
Protokollname: Application
Quelle: Application Error
Datum: 27.04.2012 21:40:23
Ereignis-ID: 1000
Aufgabenkategorie:(100)
Ebene: Fehler
Schlüsselwörter:Klassisch
Benutzer: Nicht zutreffend
Computer: Delphi-PC
Beschreibung:
Name der fehlerhaften Anwendung: xxxxxx.exe, Version: 2.5.0.512, Zeitstempel: 0x4f9af5c2
Name des fehlerhaften Moduls: ntdll.dll, Version: 6.1.7601.17725, Zeitstempel: 0x4ec49b60
Ausnahmecode: 0x80000003
Fehleroffset: 0x000a187f
ID des fehlerhaften Prozesses: 0xf9c
Startzeit der fehlerhaften Anwendung: 0x01cd24ad5a7c2e37
Pfad der fehlerhaften Anwendung: C:\Kompilate\xxxxxxx\xxxxxxx.exe
Pfad des fehlerhaften Moduls: C:\Windows\SYSTEM32\ntdll.dll
Berichtskennung: d3ed6c65-90a0-11e1-b075-0800276ef1b5
Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Application Error" />
<EventID Qualifiers="0">1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2012-04-27T19:40:23.000000000Z" />
<EventRecordID>7363</EventRecordID>
<Channel>Application</Channel>
<Computer>Delphi-PC</Computer>
<Security />
</System>
<EventData>
<Data>[MeinProgramm].exe</Data>
<Data>[Version]</Data>
<Data>4f9af5c2</Data>
<Data>ntdll.dll</Data>
<Data>6.1.7601.17725</Data>
<Data>4ec49b60</Data>
<Data>80000003</Data>
<Data>000a187f</Data>
<Data>f9c</Data>
<Data>01cd24ad5a7c2e37</Data>
<Data>C:\Kompilate\xxxxxx\xxxxx.exe</Data>
<Data>C:\Windows\SYSTEM32\ntdll.dll</Data>
<Data>d3ed6c65-90a0-11e1-b075-0800276ef1b5</Data>
</EventData>
</Event>

Was kann ich nun tun?

Danke!

Bernhard Geyer 27. Apr 2012 22:35

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Deinstallier mal Avira? Virenscanner werden vermutlich auch öfters Anti-Debug-Techniken eingebaut haben die bei Start einer Exe auch bei deaktierten Scanner immer noch wirken da die entsprechenden System-Hooks immer noch aktiv sind und teilweise Virenscanner-DLLs in jeden Prozess geladen werden.

TheMiller 28. Apr 2012 13:25

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hallo.

Hab Avira deinstalliert und danach neu gestartet. Das Problem besteht immernoch.

Aber, wie schon vorher mal geraten: Wenn das Programm außerhalb der IDE aufgerufen wird, tritt der Fehler nicht auf. Ganz normales Verhalten. Habe auch im Taskmanager geschaut - das Programm wird wirklich geschlossen.

Bernhard Geyer 28. Apr 2012 19:45

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Zitat:

Zitat von DJ-SPM (Beitrag 1164019)
Hallo.

Hab Avira deinstalliert und danach neu gestartet. Das Problem besteht immernoch.

Aber, wie schon vorher mal geraten: Wenn das Programm außerhalb der IDE aufgerufen wird, tritt der Fehler nicht auf. Ganz normales Verhalten. Habe auch im Taskmanager geschaut - das Programm wird wirklich geschlossen.

Zweite möglichkeit: Ein Treiber der deinen Anti-Debug-Schutz hat. Diverse HW von Logitech hatte/hat sowas.

TheMiller 2. Mai 2012 19:55

AW: SaveDialog.Execute führt zu Delphi-Absturz
 
Hallo!

Sorry für die späte Rückmeldung. Ich hatte ein paar Tage Pause. Also, ich habe heute die virtuelle Maschine neu aufgesetzt und alles neu installiert. Ohne, dass ich was großes geändert habe, funktioniert es. Vielleicht war wirklich eine DLL des vcredist kaputt oder so.

Ich bedanke mich bei allen, die mir geholfen haben!


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