Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zum RunFile (https://www.delphipraxis.net/20424-frage-zum-runfile.html)

daniel8520 17. Apr 2004 18:05


Frage zum RunFile
 
Hallo,

Könnte mir jemand weiterhelfen, und mir beibringen, was an diesem QuellCode falsch ist?
Delphi-Quellcode:
  begin
            NKP := GetCurrentDir + '\Datas\' + 'NeuesKonto.exe';
            RunNeuesKonto.FileName := NKP;
            RunNeuesKonto.Execute;
          end;
Ich will's noch n bissel näher erklären:
Also Delphi meldet keiner fehler. Jediglich die EXE-Datei wird nicht ausgeführt, obwohl sie natürich im CurrentDir\Datas\ steht. Wenn ich dem RunFile Obj. gleich von Anfang an NKP zuweise, und es z.B. über einen Button starte, dann geht es auch. Aber wenn ich den FileName im Betrieb des Progs. ändere, passiert gar nichts.

Mach ich irgendetwas falsch?

Danke

dizzy 17. Apr 2004 18:14

Re: Frage zum RunFile
 
Du spielst Roulette... Du weisst ja garnicht, was das CurrentDir ist! Win hat immer nur EIN CurrentDir, und das kann dir von anderen Programmen schnell "verbogen" werden. Besser wäre es mit absoluten Pfaden zu arbeiten, bzw. von der Stelle deiner EXE auszugehen.

gruss,
dizzy

Ghostwalker 17. Apr 2004 18:15

Re: Frage zum RunFile
 
Du sagst "currentdir\datas" ist das Verzeichnis ?

Dann probiers mal mit '.\datas\'+'NeuesKonto.exe' :)

daniel8520 17. Apr 2004 18:16

Re: Frage zum RunFile
 
Das CurrentDir ist meiner Meinug nach der Ordner, in dem das EXE-File ausgeführt wird. Und wenn ich dass CurrentDir in ein Edit auslesen lasse, stimmt dass auch überein.

dizzy 17. Apr 2004 18:20

Re: Frage zum RunFile
 
Das mag an sich stimmen, zunächst. Aber das ist nicht sichergestellt. Des weiteren dürfte GetCurrentDir das Varzeichnis mit abschließenden "\" zurückgeben. Dann hast du ein "\" zuviel in deiner Angabe!!


gruss,
dizzy

daniel8520 17. Apr 2004 18:24

Re: Frage zum RunFile
 
Current Dir gibt es ohne ein weitere \ zurück.
Der Fehler leigt aber woanders. Hab's gefunden.

Ich wollte die Prozedur im FomrCreate ausführen, und scheinbar lassen sich im FormCreate keine FileRuns ausführen. Liege ich da richtig?

Zitat:

Das mag an sich stimmen, zunächst. Aber das ist nicht sichergestellt.
Warum ist dass nicht sicher gestellt?

Trotzdem Dank für eure Hilfe!

Ghostwalker 17. Apr 2004 18:30

Re: Frage zum RunFile
 
Weil ein anderes Programm (das parallel zu deinem ausgeführt wird) das verstellen kann:)

Bsp.:

Du startest dein Prog. im Verzeichnis: C:\meinprogramm

Danach startest du ein anderes das im Verzeichnis: C:\einanderes liegt.


Das andere Programm stellt den "CurrentPath" um auf C:\einanderes und schon semmelt dein Programm.

daniel8520 17. Apr 2004 18:39

Re: Frage zum RunFile
 
Aha. Wusste ich gar nicht. Danke.

Und wie stehts mit deiner Variante. '.\datas\...' kann die auch verstellt werden?

Christian Seehase 17. Apr 2004 22:52

Re: Frage zum RunFile
 
Moin Daniel,

oder jemand ruft das Programm über einen Link auf in dem das Arbeitsverzeichnis (= CurrentDir) anders eingestellt ist als es für die Ausführung des Programmes notwendig ist.

Auch durch Öffnen/Speichern Dialoge lässt sich das CurrentDir "verbiegen"

Die sicherste Methode relativ zur Position der eigenen Exe zu arbeiten dürfte sein, sich den Pfad beim Programmstart mit

Delphi-Quellcode:
sProgrammRoot := ExtractFilePath(paramstr(0));
oder Ähnlichem auszulesen, und dann immer diese Variable zu benutzen.


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