![]() |
Programm stürzt bei OpenDialog ab
Hallo Leute,
ich habe ein kleines Problem mit dem OpenDialog bei Lazarus. Und zwar habe ich, testweise, nur ein Formular genommen, dort einen OpenDialog1 platziert und einen Button1, auch nicht umbenannt. Dann habe ich beim Ereignis Button1.Click folgenden Code eingefügt: OpenDialog1.Execute; Führe ich dies in der IDE aus, kann funktioniert alles Super, auch die Zugriff auf die Windows 7 Bibliotheken unter den Favoriten (auch außerhalb der IDE). Wenn ich die erzeugte exe nun auf einem anderen Windows 7 ausführe, außerhalb der IDE, weil ich die dort nicht installieren kann, dann stürzt das Programm beim Zugriff auf die Win7 Bibliotheken ab. Ohne Fehlermeldung. Beide Rechner haben Windows 7 Enterprise 64 Bit. Habt Ihr da noch eine Idee, warum das so passiert und wie ich das Lösen kann? Ich habe bei dem Programm, welches ich entwickle erst mal so gelöst das Initial-Dir auf C:\ zu stellen, damit das Programm nicht abstürzt, sollte OpenDialog in einer Bibliothek initialisiert werden, denn dann würde das Programm abstürzen. Grüße Florian |
AW: Programm stürzt bei OpenDialog ab
Ich vermute mal, dass irgendein Preview Handler Probleme macht. Ich konnte dieses Problem mal lösen, in dem ich das Benutzerprofil einfach neu angelegt habe...
|
AW: Programm stürzt bei OpenDialog ab
Hallo,
danke für die Info. Allerdings wurde dies, wenngleich aus einem anderen Grund, bereits getan. Das Profil ist niegel nagel neu. Aber danke für die Idee. Hast du ggf. noch weitere Ideen? Eine Möglichkeit die Bibliotheken auszublenden gibt es ja nicht, oder? Grüße Florian |
AW: Programm stürzt bei OpenDialog ab
HI
Bin zwar selber noch ein Anfänger aber vielleicht könnte es ja an so etwas liegen: - Zu wenig Benutzerrechte der Delphi Anwendung? (Daher funktioniert es evt nur in der IDE) - Könnte es sein, wenn der Windows Bibliotheken andere Pfade zugewiesen wurde als standartmässig voreingestellt waren (zB anstatt c:/user/pictures zu: F:/Bilder)? - Hilft es / macht es einen Unterschied, wenn du den Opendialog aufruf in einem Try / Except schreibst? - Ich rufe den Opendialog immer so auf:
Delphi-Quellcode:
Keine Ahnung ob etwas helfen könnte. Aber wer weis... :-D
If opendialog1.execute=true then begin
edit1.text:=opendialog1.filename); end; |
AW: Programm stürzt bei OpenDialog ab
Ich gehe immer so vor, dass ich mir den ProcessMonitor downloade / starte. Das Programm spuckt dir alle möglichen I/O Zugriffe durch das Betriebssystem aus.
Dort setze ich einen entsprechenden Filter für mein Programm. Dann führe ich in dem Programm die Problemstelle durch und schaue, was genau Windows an dieser Stelle alles so macht... Dort werden zwar immer noch sehr viele Einträge stehen (z.B. die von Windows' drwatson usw.) aber irgendwann müsste auch das Problemkind auftauchen. Einen Versuch ist's wert. |
AW: Programm stürzt bei OpenDialog ab
OT:
Zitat:
Delphi-Quellcode:
execute gibt bereits einen Boolean-Typ zurück. Nochmals auf true zu überprüfen, wäre "doppelt gemoppelt" und auch aus anderen Gründen nicht zu empfelen...
If (opendialog1.execute) then begin
edit1.text := opendialog1.filename); end; wenn man die ganze Sache dann weiterspinnt, könnte man auch schreiben
Delphi-Quellcode:
Macht wenig Sinn, oder? ;-)
If ((((opendialog1.execute=true)=true)=true)=true) then begin
edit1.text:=opendialog1.filename); end; |
AW: Programm stürzt bei OpenDialog ab
:-D Aha Danke. Muss ich gleich bei mir ändern :-D
Zitat:
|
AW: Programm stürzt bei OpenDialog ab
- Zu wenig Benutzerrechte der Delphi Anwendung? (Daher funktioniert es evt nur in der IDE)
Beide Rechner haben nur Benutzerrechte, keine Administratorrechte. - Könnte es sein, wenn der Windows Bibliotheken andere Pfade zugewiesen wurde als standartmässig voreingestellt waren (zB anstatt c:/user/pictures zu: F:/Bilder)? Die Pfade sind bei beiden Rechner die Standardmäßigen von Windows - Hilft es / macht es einen Unterschied, wenn du den Opendialog aufruf in einem Try / Except schreibst? Ein Try/Except habe ich noch nicht probiert, werde es mal machen - Ich rufe den Opendialog immer so auf:
Delphi-Quellcode:
IMHO habe ich keine Aktion in meinem Testprogramm, welche sich auf den FileName bezieht. Außerdem tritt die Exception schon auf, bevor von opendialog1 irgendwas zurückgegeben wird.
If opendialog1.execute=true then begin
edit1.text:=opendialog1.filename); end;
Delphi-Quellcode:
Zumal da auch eine Klammer zu vel ist, doer? :)
If (opendialog1.execute) then begin
edit1.text := opendialog1.filename); end; @Morphie: Werde das mal auspropieren, mal sehen inwieweit meine Userrechte da ausreichen ;) |
AW: Programm stürzt bei OpenDialog ab
Jap, wie ich es mir schon gedacht habe, kann ich ohne Adminrechte mit dem ProcessMonitor nichts anfangen, da gibt es sicherlich auch keine Möglichkeit das ohne Adminrechte zu machen?!
|
AW: Programm stürzt bei OpenDialog ab
Nein, der ProcessMonitor braucht Administrator Rechte.
Gibt es dort keinen Admin, der dich dabei unterstützen könnte? |
AW: Programm stürzt bei OpenDialog ab
Auch wenn es etwas spät ist
was bedeutet "stürzt ab"? Könnte es vllt. auch sein, das da eine tote Netzwerkverbindung ins Spiel kommt? Außerdem kann man das InitialDir vorbelegen. Das Userverzeichnis sollte da im allgemeinen keine Probleme bereiten. C:\ ist da u.U. nicht so diee Wahl. Gruß K-H |
AW: Programm stürzt bei OpenDialog ab
Zitat:
InitialDir hab ich nur zur Lösung gesetzt ;) Damit funktioniert es auch ohne Probleme, wenn man nicht in die Bibliotheken wechselt. Das habe ich nur auf C:\ gesetzt, damit das Programm nicht abstürzt weil man zufällig in einen Bibliotheksordner initialisiert. P.S.: Adminrecht werde ich mir im Laufe des Tages mal besorgen ;) Ist ja nicht so als gäbe es da keinen :) |
AW: Programm stürzt bei OpenDialog ab
Zitat:
Hast Du auch an das Manifest gedacht? Die beschriebene Fehlermeldung taucht manchmal bei Manifest-Problemen auf. Gruß K-H |
AW: Programm stürzt bei OpenDialog ab
dann sei froh, daß ich nicht dein Admin bin :zwinker:
Warum? Hast Du auch an das Manifest gedacht? Ähm, in welchem Zusammenhang? Die Anwendung benätigt keine Adminrechte, also sollte doch die Standard-Manifest in Ordnung sein?! |
AW: Programm stürzt bei OpenDialog ab
Wenn einer kommt und ausserhalb der Installation Adminrechte benötigt, wird er hochkannt an die frische Luft befördert. Zumindstens im "normalen" Büroumfeld kann man als normaler Nutzer ganz gut leben. Ggf. müssen ein paar (Datei-)Zugriffsrechte angepasst werden, das war's dann aber auch.
Gruß K-H |
AW: Programm stürzt bei OpenDialog ab
Das stimmt, da gebe ich dir auch vollkommen Recht.
Allerdings kannst du zeitlich begrenzte Adminrechte bekommen, wenn es für deine Arbeit benötigt wird ;) |
AW: Programm stürzt bei OpenDialog ab
Dann ist aber auch der Admin dafür verantwortlich, dass alle Preview Handler ordnungsgemäß funktionieren. (falls es denn an diesen liegt)
OpenDialog ruft ja lediglich die entsprechende API auf. Ich denke nicht, dass der Fehler in dem eigenen Programm zu suchen ist. |
AW: Programm stürzt bei OpenDialog ab
Zitat:
|
AW: Programm stürzt bei OpenDialog ab
Dein Lazarus Programm ist 32 Bit, oder?
C# = Any CPU = 64 Bit Das ist quasi ein anderes System. |
AW: Programm stürzt bei OpenDialog ab
Zitat:
|
AW: Programm stürzt bei OpenDialog ab
Ok, das scheint in der Tat auch 64Bit zu sein... Dann habe ich nix gesagt ;-) Dann hilft wirklich nur herauszufinden, wobei der Fehler entsteht (ProcessMonitor, Debugger usw.)
|
AW: Programm stürzt bei OpenDialog ab
Was du eventuell noch ausprobieren könntest:
InitDir auf z.B. C:\ stellen (da gibt es doch keinen Fehler, richtig?) Dann per "Rechtsklick > Ansicht > Details" die Ansicht ändern, bzw. die Vorschau deaktivieren Dann in die Bibliothek gehen... Wenn der Fehler jetzt nicht mehr auftritt liegt es wohl wirklich an einer Shellextension / Preview Handler edit: bzw. die Darestellung schon vorher im Explorer / in einem anderen Programm ändern. |
AW: Programm stürzt bei OpenDialog ab
Zitat:
|
AW: Programm stürzt bei OpenDialog ab
Kannst du das Problem denn in einer kleinen Test-Anwendung nachbilden?
|
AW: Programm stürzt bei OpenDialog ab
Zitat:
P.S.: An Debugger bzw. ProcessMonitor bin ich noch dran... |
AW: Programm stürzt bei OpenDialog ab
Dann häng das Programm doch mal an, dann können wir das hier versuchen nachzuvollziehen.
|
AW: Programm stürzt bei OpenDialog ab
Hallo,
das ist jetzt nicht mehr nötig. Es lag doch an Lazarus, allerdings weiß ich nicht warum :) Und zwar habe ich auf dem betreffenden PC, auf dem das Programm abstürzt Lazarus Portable genommen, was ich noch auf dem einem USB-Stick hatte und damit den Quellcode compiliert. Und siehe da: Es funktioniert, kein Absturz. Entweder ist die Lazarus Installation auf dem anderen Rechner nicht ganz sauber, oder ich weiß nicht... Zum Hochladen des Programms: Ich hoffe du verstehst es, wenn die Unternehmensrichtlinien dies nicht erlauben ;) Danke für eure Hilfe! P.S.: War jetzt doch einfacher als ich gedacht hatte :S Grüße Florian |
AW: Programm stürzt bei OpenDialog ab
Na denn ist ja alles bestens. :-)
|
AW: Programm stürzt bei OpenDialog ab
Zitat:
SUPER! Grüße Florian |
AW: Programm stürzt bei OpenDialog ab
Nur für's Protokoll: welche Lazarus Version hat dein ursprüngliche Installation und welche die portable? Waren beides 64-Bit Varianten oder war die Portable nur 32-Bit?
Gruß, Sven PS: für die Versionsangabe am Besten in den Über Dialog gehen und den Inhalt mit Steg+C kopieren (soll angeblich funktionieren). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 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