Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   StreamOpen (TOpenDialog) beendet die Anwendung (https://www.delphipraxis.net/175509-streamopen-topendialog-beendet-die-anwendung.html)

EWeiss 26. Jun 2013 21:44


StreamOpen (TOpenDialog) beendet die Anwendung
 
Habe ein problem mit StreamOpen.
Jedesmal wenn ich Dateien zu meiner Playliste addieren will beendet das Programm ohne irgendeine Meldung.
Allerdings nur innerhalb der IDE nicht als eigenständige EXE.

Delphi-Quellcode:
StreamOpen.InitialDir := ExtractFilePath(ParamStr(0));

if StreamOpen.Execute then

Woran kann das liegen?
Normale VCL Anwendung.

gruss

Uwe Raabe 26. Jun 2013 22:03

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Hast du zufällig Norton auf dem Rechner?

Uwe Raabe 26. Jun 2013 22:06

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Oder TortoiseSVN? Wenn ja, welche Version?

jaenicke 26. Jun 2013 22:09

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Mit Norton oder Turtoise hatte ich das Problem noch nie, aber wir hatten das massiv mit TeamViewer. Seit Version 7 ist da ab er Ruhe bei uns, da läuft alles.

EWeiss 26. Jun 2013 22:13

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Ich habe TortoiseGit heute erste installiert da ich das MediPortal Projekt Debuggen muss.
Aber das problem gab es schon vorher.
Dann hab ich noch DropBox.

Das kann es doch nicht sein jetzt muss ich VCL mit NonVcl mischen weil
der Dialog nicht aufgerufen wird.

Norton / TeamViewer verwende ich auch nicht.

gruss

Uwe Raabe 26. Jun 2013 22:19

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Also, Ursache dafür ist wahrscheinlich eine DLL, die sich in den OpenDialog einhängt und den Dialog zum Absturz bringt, wenn er unter Debug-Bedingungen (sprich IDE) aufgerufen wird. Welche der Shell-Extensions das ist, musst du allerdings selbst herausfinden.

EWeiss 26. Jun 2013 22:23

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1219837)
Also, Ursache dafür ist wahrscheinlich eine DLL, die sich in den OpenDialog einhängt und den Dialog zum Absturz bringt, wenn er unter Debug-Bedingungen (sprich IDE) aufgerufen wird. Welche der Shell-Extensions das ist, musst du allerdings selbst herausfinden.

Ich will ja meine DLL mit dieser Anwendung debuggen die hängt sich aber nicht in den OpenDialog ein
Die macht nichts mit OpenDialog und verwendet auch keinen.

gruss

Uwe Raabe 26. Jun 2013 22:46

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von EWeiss (Beitrag 1219838)
Zitat:

Zitat von Uwe Raabe (Beitrag 1219837)
Also, Ursache dafür ist wahrscheinlich eine DLL, die sich in den OpenDialog einhängt und den Dialog zum Absturz bringt, wenn er unter Debug-Bedingungen (sprich IDE) aufgerufen wird. Welche der Shell-Extensions das ist, musst du allerdings selbst herausfinden.

Ich will ja meine DLL mit dieser Anwendung debuggen die hängt sich aber nicht in den OpenDialog ein
Die macht nichts mit OpenDialog und verwendet auch keinen.

gruss

Das habe ich auch nicht gemeint. Es handelt sich wohl eher um eine DLL, die über eine andere Applikation installiert wurde und sich z.B. im Kontext-Menü des Explorers bemerkbar macht. Das tun z.B. Virenscanner, Dropbox und vermutlich auch TortoiseGit (hab hier nur TortoiseSVN und TortoiseHG). Es gibt aber noch einen Haufen andere.

EWeiss 26. Jun 2013 22:52

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Ach so OK.
Dann muss ich wohl oder übel auf nonvcl ausweichen was den Dialog angeht.
Hoffe mal das es dan läuft.

Aber so etwas müßte man eigentlich von der IDE Seite her beheben.

gruss

Uwe Raabe 26. Jun 2013 23:02

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von EWeiss (Beitrag 1219840)
Aber so etwas müßte man eigentlich von der IDE Seite her beheben.

Das kann man nicht und das ist auch kein Delphi-Problem. Das würde in jeder anderen IDE auch passieren, die einen Debugger in den Prozess hängt.

Außerdem ist es die besagte DLL, die das Problem verursacht, weil sie nicht richtig programmiert wurde. Wie sollen die Leute bei Embarcadero denn wissen, was du so alles auf deinem Rechner installiert hast. Außerdem ist (wenn dein Profil stimmt) dein D2010 ja schon ein paar Tage alt und die Programmierer konnten damals wohl kaum die aktuellen buggy Shell-Extensions voraussehen.

EWeiss 26. Jun 2013 23:15

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

dein D2010 ja schon ein paar Tage alt und die Programmierer konnten damals wohl kaum die aktuellen buggy Shell-Extensions voraussehen.
Jo das ist schon wahr.

Da ich aber nur als Hobby programmiere ist mir das ausreichend genug.

gruss

sx2008 27. Jun 2013 12:02

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Mit Autoruns kann man die Shell-Extentions temporär oder dauerhaft abschalten.
Seite: "Explorer"

EWeiss 27. Jun 2013 15:35

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von sx2008 (Beitrag 1219865)
Mit Autoruns kann man die Shell-Extentions temporär oder dauerhaft abschalten.
Seite: "Explorer"

Danke werd damit mal was rumspielen.
Was ist denn mit den einträgen die rot angezeigt werden.
In der Hilfe da find ich nix ;)

gruss

sx2008 27. Jun 2013 16:27

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von EWeiss (Beitrag 1219876)
Was ist denn mit den einträgen die rot angezeigt werden.

Rot (hellrot) sind Einträge dessen DLL keine oder keine überprüfbare Signatur haben.
Diese Einträge sollte man wenn man nach Viren & Co sucht als Erstes überprüfen.
Gelb sind Einträge zu denen es keine Datei mehr gibt (kann man löschen).

Im Menue kann man unter Options->Filter Options... hide Microsoft entries wählen damit etwas übersichtlicher wird.

EWeiss 27. Jun 2013 19:51

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Ist nicht schlecht das teil kann ich gut gebrauchen ;)
Aber!

Auch nach deaktivieren aller ShellExtension ist das problem mit meiner Anwendung nicht behoben.
Weiterhin verabschiedet sich die Anwendung (In der IDE) wenn ich Dateien addieren möchte mit dem OpenDialog.

gruss

baumina 28. Jun 2013 07:35

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Es könnte auch mit Styles und/oder Windows-Aero-Effekt zusammenhängen, vielleicht spielst in dieser Richtung mal bisserl rum.

[Edit]
Auch hier hätte ich was zu dem Thema gefunden, vielleicht hilft das ja : http://embarcadero.newsgroups.archiv...102614783.html
[/Edit]

EWeiss 28. Jun 2013 16:16

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von baumina (Beitrag 1219912)
Es könnte auch mit Styles und/oder Windows-Aero-Effekt zusammenhängen, vielleicht spielst in dieser Richtung mal bisserl rum.

[Edit]
Auch hier hätte ich was zu dem Thema gefunden, vielleicht hilft das ja : http://embarcadero.newsgroups.archiv...102614783.html
[/Edit]

Danke! für den Hinweis..
Aber sorry nein ich krempel doch nicht mein gesamtest System um nur weil
die Anwendung Delphi nicht in der lage ist beim aufruf eines Dialog seine eigene IDE stabil zu halten.

Dann lass ich es so wie es ist und gut ist.:stupid:

gruss

jaenicke 28. Jun 2013 16:18

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von EWeiss (Beitrag 1219950)
die Anwendung Delphi nicht in der lage ist beim aufruf eines Dialog seine eigene IDE stabil zu halten.

Wie schon weiter oben zu lesen: das hat nichts mit Delphi zu tun.

EWeiss 28. Jun 2013 16:27

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1219951)
Zitat:

Zitat von EWeiss (Beitrag 1219950)
die Anwendung Delphi nicht in der lage ist beim aufruf eines Dialog seine eigene IDE stabil zu halten.

Wie schon weiter oben zu lesen: das hat nichts mit Delphi zu tun.

Nein?

Dem muss ich widersprechen.. denn das problem tritt weder in VB6, C++, C#, VB-Net, PowerBasic auf.
Hier werden die IDE's nicht beendet bei gleichen aufbau der Anwendung und verwendeter Bibliotheken.

gruss

Uwe Raabe 28. Jun 2013 16:55

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von EWeiss (Beitrag 1219953)
Dem muss ich widersprechen.. denn das problem tritt weder in VB6, C++, C#, VB-Net, PowerBasic auf.
Hier werden die IDE's nicht beendet bei gleichen aufbau der Anwendung und verwendeter Bibliotheken.

Dagegen spricht, daß es bei der überwiegenden Mehrheit der Delphi-User problemlos geht. Ich behaupte weiterhin, es liegt an deinem System. Wir haben dir hier lediglich Wege aufgezeigt, das Problem zu lokalisieren. Wenn du gar kein Interesse an einer Lösung hast, dann können wir dir auch nicht helfen.

EWeiss 28. Jun 2013 17:08

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Wenn du gar kein Interesse an einer Lösung hast, dann können wir dir auch nicht helfen.
Wenn da kein Interesse beständ hätte ich mir den Thread sparen können.
Nur lustig das ich mit VB6, gerade extra nochmal getestet, den System Dialog aufrufen kann ohne das die IDE den geist aufgibt.

Werde dann wohl speziell was diese Anwendung angeht
lieber auf C# zurückgreifen wenn ich diverse Dinge debuggen muss. (Das ist eine lösung)
Mein System umkrempeln wegen einer IDE die nicht funktioniert werde ich auf gar keinen Fall!
Das ist auch keine lösung..

gruss

jaenicke 28. Jun 2013 20:05

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Wir haben im Büro ja auch monatelang das Problem gehabt. Irgendwann hatte ich keine Lust mehr und habe mich ein paar Stunden hingesetzt und debuggt. Dabei habe ich dann herausgefunden, dass es an TeamViewer 6 lag. (Der Support hat mir dann auch den Tipp gegeben, dass es am Quick Connect Button liegen könnte.)

Jedenfalls gibt es sehr viele Möglichkeiten woran es liegen kann.

Wenn du weißt, dass das Problem neu ist, wäre es vielleicht am sinnvollsten das letzte Backup zurückzuspielen, wenn das Problem da noch nicht bestand.

EWeiss 28. Jun 2013 22:34

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Hab das problem gefunden.
Aber ist nicht so einfach zu erklären warum das auftritt.

Wenn ich beim Einlesen der DLL's diese nach der prüfung des Einsprungspunkt
wieder freigebe (sollte eigentlich normal sein) tritt der wie hier im Thread genannte Fehler auf.

Gebe ich sie nicht frei!
Dann funktionieren alle Dialoge habe aber dann andere schwierigkeiten die nicht auftreten
wenn die Libraries ordnungsgemäß freigegeben werden.

gruss

jaenicke 29. Jun 2013 07:26

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Beim Entladen der DLLs werden auch deren Entladeroutinen ausgeführt sofern die DLL nicht noch anderweitig im Programm benutzt wird. Vielleicht passiert da etwas, was das verursacht.
Dass zu jedem LoadLibrary genau ein FreeLibrary existiert, hast du ja sicher schon sichergestellt, oder? (Das war mein Problem in einer Anwendung einmal.)

EWeiss 29. Jun 2013 15:17

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1220008)
Beim Entladen der DLLs werden auch deren Entladeroutinen ausgeführt sofern die DLL nicht noch anderweitig im Programm benutzt wird. Vielleicht passiert da etwas, was das verursacht.
Dass zu jedem LoadLibrary genau ein FreeLibrary existiert, hast du ja sicher schon sichergestellt, oder? (Das war mein Problem in einer Anwendung einmal.)

Delphi-Quellcode:
//Prüfroutine für Winamp-Plugins
function IsWinampPlugin(APlugin:string):BOOL;
var
  ext : string;
  dll : HMODULE;

begin
  result := FALSE;
  ext   := uppercase(ExtractFileExt(APlugin));

  if (ext <> '.DLL') then
    exit;

  dll := LoadLibrary(PWideChar(APlugin));
  if (dll = 0) then
    exit;

  if GetProcAddress(Dll, 'winampVisGetHeader') = nil then
  begin
    FreeLibrary(dll);
    exit;
  end;
  FreeLibrary(dll);

  result := TRUE;
end;
Ich suche recursive nach DLL's im Ordner wird eine gefunden und der Einsprungspunkt fehlt wird sie entladen.
Natürlich auch wenn er gefunden wird.

Das sollte eigentlich der richtige weg sein.
So funktioniert acuh mein Programm 100% als eigenständige EXE aber nicht in der IDE(Laden von Dateien) usw..
Entferne ich das letzte FreeLibrary dann funktioniert die IDE 100% aber die Anwendung nicht mehr bei diversen dingen.

gruss

EWeiss 29. Jun 2013 15:59

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Falls es mal jemand testen will..
Habe es mal angehangen.

Projekt laden alle Plugins durchgehen bis der moment kommt wo
die Anwendung in der IDE sich ohne irgendeine Meldung verabschiedet.

Danach das ganze als eigenständige EXE nochmal testen.
In D2010 beendet die IDE(bzw. das Programm) würde mich mal interessieren ob es auch bei anderen Versionen so ist.

gruss

jaenicke 29. Jun 2013 17:17

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Auf meinem PC funktioniert alles problemlos, ich kann die Pluginliste durchklicken, den Dateidialog unten rechts öffnen, alles. Ich habe es mit Delphi 2010 unter Windows 8 64-Bit getestet.

EWeiss 29. Jun 2013 17:28

AW: StreamOpen (TOpenDialog) beendet die Anwendung
 
Zitat:

Zitat von jaenicke (Beitrag 1220068)
Auf meinem PC funktioniert alles problemlos, ich kann die Pluginliste durchklicken, den Dateidialog unten rechts öffnen, alles. Ich habe es mit Delphi 2010 unter Windows 8 64-Bit getestet.

Win8 hab ich nicht dürfte aber keine rolle spielen ob 7 oder 8


Danke.. Das begreife ich einfach nicht :oops:
Ich hab alles ausgeschaltet mit dem Tool hier Autoruns hat alles nichts gebracht.
Vielleicht mal den AVG deaktivieren ausschalten kann man den ja nicht so einfach.
.. nö bringt auch nix.

Da bekomme ich langsam die krise.. :pale:

Danke für das testen so weiss ich wenigstens das mein Wrapper auch unter W8 läuft.

gruss


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