Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Probleme auf neuem Rechner (https://www.delphipraxis.net/201495-probleme-auf-neuem-rechner.html)

Rawsche 26. Jul 2019 11:28

Probleme auf neuem Rechner
 
Hallo zusammen,
ich habe mir vor kurzen einen neuen PC gekauft.
Alter PC: Windows 10 Home
Neuer PC: Windows 10 Pro

Ich programmiere nun also auf dem neuen PC und arbeite weiter an einem Programm, was bereits auf dem alten PC fehlerfrei lief.
Nun ergibt sich aber auf dem neuen PC ein mir völlig unversätndliches Problem.

Mein Programm soll sich unter gewissen Umständen neu starten lassen. Dafür verwendete ich bisher immer folgenden Code:
Code:
form1.close;
ShellExecute(Handle, 'open',PChar(Application.ExeName), nil, nil, 0);
Wenn ich nun aber einen Neustart durchführen will, dann passiert (nur auf meinem neuen PC, trotz des selben Codes) einfach nichts. Keine Fehlermeldung, keine Reaktion, einfach überhaupt nichts. Auf meinem alten Rechner funktioniert der Neustart immer noch problemlos.

Kann mir einer von euch erklären, wie das passieren kann? Wie kann ich das Problem beheben?

Vielen Dank und LG

DieDolly 26. Jul 2019 11:44

AW: Probleme auf neuem Rechner
 
Ich denke das ist pures Glück, dass es auf dem alten PC funktioniert.
Der neue macht meiner Meinung nach genau das was zu erwarten ist.

Du sagst deinem Programm es soll sich schließen und erst danach ruft es sich selber wieder auf.
Pures Glück wenn das mal klappt.

Einen Neustart realisiert man am besten anders aber nicht so.

peterbelow 26. Jul 2019 11:48

AW: Probleme auf neuem Rechner
 
Zitat:

Zitat von Rawsche (Beitrag 1437717)
Hallo zusammen,
ich habe mir vor kurzen einen neuen PC gekauft.
Alter PC: Windows 10 Home
Neuer PC: Windows 10 Pro

Ich programmiere nun also auf dem neuen PC und arbeite weiter an einem Programm, was bereits auf dem alten PC fehlerfrei lief.
Nun ergibt sich aber auf dem neuen PC ein mir völlig unversätndliches Problem.

Mein Programm soll sich unter gewissen Umständen neu starten lassen. Dafür verwendete ich bisher immer folgenden Code:
Code:
form1.close;
ShellExecute(Handle, 'open',PChar(Application.ExeName), nil, nil, 0);
Wenn ich nun aber einen Neustart durchführen will, dann passiert (nur auf meinem neuen PC, trotz des selben Codes) einfach nichts. Keine Fehlermeldung, keine Reaktion, einfach überhaupt nichts. Auf meinem alten Rechner funktioniert der Neustart immer noch problemlos.

Kann mir einer von euch erklären, wie das passieren kann? Wie kann ich das Problem beheben?

Vielen Dank und LG

Prüfe den Rückgabewert von ShellExecute!

Klaus01 26. Jul 2019 11:49

AW: Probleme auf neuem Rechner
 
.. mormalerweise hat man für diese Art von Problemen einen Watcher Prozess.
Dieser überwacht das Programm und startet es bei Bedarf wieder neu.

Grüße
Klaus

DieDolly 26. Jul 2019 11:49

AW: Probleme auf neuem Rechner
 
Oder man ruft ShellExecute im FormDestroy auf. So spät wie möglich.

Luckie 26. Jul 2019 13:12

AW: Probleme auf neuem Rechner
 
Zitat:

Zitat von peterbelow (Beitrag 1437720)
Prüfe den Rückgabewert von ShellExecute!

Das wird er nicht mehr können, da der aufrufende Prozess beendet wurde.

Aber das was du da machst, ist in etwa so, also ob du erst dich erschießt und danach die Geisel erschießen willst. Ok, das war jetzt etwas makaber.

Davon abgesehen lässt sich so ein Programm nie sauber beenden, wenn es keine andere Möglichkeit gibt es zu beenden.

jsp 26. Jul 2019 13:34

AW: Probleme auf neuem Rechner
 
Le roi est mort, vive le roi

Sorry, es ist einfach zu heiss :roll:

Rawsche 26. Jul 2019 13:48

AW: Probleme auf neuem Rechner
 
Danke erstmal für eure Rückmeldung. Ich verstehe, dass ihr nicht zufrieden seid mit meiner Art den Neustart herbeizuführen. Ich werde mich da sicherlich auch nochmal intensiver mit beschäftigen. Mein Problem bleibt aber auch so bestehen:

Ich habe mal versucht ein anderes Programm per ShellExecute einfach aufzurufen ohne mein Programm zu schließen. Das sah so aus:
Code:
ShellExecute(Handle, 'open', PChar('C:\Datei.exe'), Nil, Nil, 1);
Die ausgewählte Datei funktionierte einwandfrei und lag auch am richtigen Ort mit dem richtigen Namen. Trotzdem passierte wieder nichts Sichtbares...

Vielleicht mache ich irgendetwas grundlegend falsch?!

DieDolly 26. Jul 2019 14:03

AW: Probleme auf neuem Rechner
 
Zitat:

Danke erstmal für eure Rückmeldung. Ich verstehe, dass ihr nicht zufrieden seid mit meiner Art den Neustart herbeizuführen. Ich werde mich da sicherlich auch nochmal intensiver mit beschäftigen
Setz das Shellexecute ins FormDestroy und dann sollte alles funktionieren.

Rawsche 26. Jul 2019 14:23

AW: Probleme auf neuem Rechner
 
Zitat:

Zitat von DieDolly (Beitrag 1437735)
Zitat:

Danke erstmal für eure Rückmeldung. Ich verstehe, dass ihr nicht zufrieden seid mit meiner Art den Neustart herbeizuführen. Ich werde mich da sicherlich auch nochmal intensiver mit beschäftigen
Setz das Shellexecute ins FormDestroy und dann sollte alles funktionieren.

Habe es gerade versucht. Hat leider keinen Effekt. Das Programm startet trotzdem nicht.

Ich glaube aber, dass ich mittlerweile einen Grund gefunden haben könnte. Ich habe mir (wie von euch empfohlen) von ShellExecute den Rückgabewert anzeigen lassen...
Ergebnis: "The specified file was not found."

Da ich aber das File korrekt angegeben habe, war ich verwirrt.
Ich hab deshalb mal die .exe Datei in verschiedene Ordner gerückt und getestet.
Dabei hab ich folgendes herausgefunden. Wenn die .exe im Ordner oder Unterordner meines Benutzernamens liegt, dann kann sie nicht gefunden werden. Wenn ich sie tatsächlich einfach nur nach C:/ lege, dann kann sie gefunden werden.

Es hat also meiner Meinung nach etwas mit meinem Benutzernamen zu tun. Dieser hat leider ein Leerzeichen und ein Sonderzeichen in sich. Zwar nicht mein echter Name, aber in etwas sieht er so aus: "Max Müller".

Mit dem Problem habe ich schon einmal auf dem neuen Rechner gekämpft. Dort wurde nämlich die EnvironmentVariable APPDATA, nicht in "C:\Users\Max Müller\AppData\Roaming" sondern in "C:\Users\Max MǬller\AppData\Roaming" oder in "C:\Users\Max Müller\AppData\Roaming" aufgelöst. Diese Orte konnten natürlich dann nicht gefunden werden.
Gelöst habe ich das Problem damals, in dem ich die Zeichen "ü" und "Ǭ" manuell ersetzt habe.

Ich habe deshalb jetzt mal mein Programm mit dem Neustart nach C:/ geschoben. Der Neustart funktioniert nun wieder. Das kann aber ja keine echt Lösung sein, da das Programm ja von jedem Speicherort aus laufen können sollte...

Vielleicht helfen die Infos, damit mein Problem besser deutlich wird.
Was kann ich tun, um dieses Problem zu beheben?


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