Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Programm stürzt bei OpenDialog ab (https://www.delphipraxis.net/173685-programm-stuerzt-bei-opendialog-ab.html)

Thor500 11. Mär 2013 09:27

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

Morphie 11. Mär 2013 10:41

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...

Thor500 11. Mär 2013 10:57

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

gee21 11. Mär 2013 10:59

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:
If opendialog1.execute=true then begin
edit1.text:=opendialog1.filename);
end;
Keine Ahnung ob etwas helfen könnte. Aber wer weis... :-D

Morphie 11. Mär 2013 11:03

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.

Morphie 11. Mär 2013 11:07

AW: Programm stürzt bei OpenDialog ab
 
OT:

Zitat:

Zitat von gee21 (Beitrag 1206840)
- Ich rufe den Opendialog immer so auf:
Delphi-Quellcode:
If opendialog1.execute=true then begin
edit1.text:=opendialog1.filename);
end;

Viel besser wäre allerdings

Delphi-Quellcode:
If (opendialog1.execute) then begin
  edit1.text := opendialog1.filename);
end;
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...
wenn man die ganze Sache dann weiterspinnt, könnte man auch schreiben
Delphi-Quellcode:
If ((((opendialog1.execute=true)=true)=true)=true) then begin
edit1.text:=opendialog1.filename);
end;
Macht wenig Sinn, oder? ;-)

gee21 11. Mär 2013 11:10

AW: Programm stürzt bei OpenDialog ab
 
:-D Aha Danke. Muss ich gleich bei mir ändern :-D

Zitat:

Zitat von Morphie (Beitrag 1206846)
OT:

Zitat:

Zitat von gee21 (Beitrag 1206840)
- Ich rufe den Opendialog immer so auf:
Delphi-Quellcode:
If opendialog1.execute=true then begin
edit1.text:=opendialog1.filename);
end;

Viel besser wäre allerdings

Delphi-Quellcode:
If (opendialog1.execute) then begin
  edit1.text := opendialog1.filename);
end;
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...
wenn man die ganze Sache dann weiterspinnt, könnte man auch schreiben
Delphi-Quellcode:
If ((((opendialog1.execute=true)=true)=true)=true) then begin
edit1.text:=opendialog1.filename);
end;
Macht wenig Sinn, oder? ;-)


Thor500 11. Mär 2013 11:10

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:
If opendialog1.execute=true then begin
edit1.text:=opendialog1.filename);
end;
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.



Delphi-Quellcode:
If (opendialog1.execute) then begin
  edit1.text := opendialog1.filename);
end;
Zumal da auch eine Klammer zu vel ist, doer? :)

@Morphie:
Werde das mal auspropieren, mal sehen inwieweit meine Userrechte da ausreichen ;)

Thor500 11. Mär 2013 11:16

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?!

Morphie 11. Mär 2013 11:18

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.
Seite 1 von 3  1 23      

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