Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Laufendes Programm sich selbst verschieben/ kopieren (https://www.delphipraxis.net/107862-laufendes-programm-sich-selbst-verschieben-kopieren.html)

Elko 3. Feb 2008 18:39


Laufendes Programm sich selbst verschieben/ kopieren
 
Hallo Leute,
ich habe ein Programm geschrieben, welches ich so ausstatten möchte, dass es sich selbst in einen anderen Ordner verschiebt. Ich habe schon viel gegooglet, aber dazu leider nix gefunden. Ich denke, das Problem liegt daran, dass es sich ja während es läuft verschieben soll.
Freue mich schon auf Eure Antworten!:thumb:
Viele Grüße, Elko

Strahlex 3. Feb 2008 18:44

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Lass das Programm einfach eine Batch-Datei erstellen und ausführen :)

snow 3. Feb 2008 18:53

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
du könntest die I/O checks peer compilerdiriktive abstellen. Vllt gehts dann ohne fehlermeldung.

gruß snow

Elko 3. Feb 2008 22:37

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Soll ich dazu dann CopyFile benutzen? Wenn ja, was soll ich dann als Parameter angeben?
Gruß, Elko

Hansa 3. Feb 2008 22:44

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Er redet von einem LAUFENDEN Programm ! Sowas seltsames gabs doch letztens erst. :shock:

Elko 3. Feb 2008 22:46

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
ja, ich rede vom selbstständigen Kopieren eines laufendes Proramms in ein anderes Verzeichnis :roteyes:
gibts danicht noch n andere Möglichkeit als mit einer Batch Datei? zB. CopyFile?
:dp:

snow 3. Feb 2008 22:58

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Delphi-Quellcode:
var filepathold : string;
filepathnew : string;
streamold : Tstream;
streamnew : Tstream;
begin
{$I-}
filepathnew:='I:\delphi\testContainer\Project1.exe';
filepathold:=ExtractFilePath(ParamStr(0))+'Project1.exe';
streamnew := TFilestream.Create(filepathnew,fmCreate);
streamold := TFilestream.Create(filepathold,fmShareDenyNone);
streamnew.CopyFrom(streamold,streamold.Size);
streamold.Free;
streamnew.Free;
{$I+}
so gehts... (wenn das projeckt Project1.exe heißt)

gruß snow

Ralf Kaiser 4. Feb 2008 07:45

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Zitat:

Zitat von snow
Delphi-Quellcode:
filepathold:=ExtractFilePath(ParamStr(0))+'Project1.exe';
so gehts... (wenn das projeckt Project1.exe heißt)

Nein. So geht es nicht. ParamStr(0) enthält bereits den vollen Namen. Da muss "Project1.exe" nicht mehr angehängt werden!

FAlter 4. Feb 2008 08:16

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Hi Elko,

natürlich geht es mit CopyFile. Ich hatte jedenfalls keine Probleme. Nur verschieben kannst du es nicht, dazu muss es vorher beendet werden.

Delphi-Quellcode:
var
  OldName, NewName: String;
  Overwrite: Boolean;
begin
  OldName := ParamStr(0);
  NewName := 'D:\' + ExtractFileName(OldName);
  Overwrite := false;

  CopyFile(PChar(OldName), PChar(NewName), Overwrite);
end;
Mfg
FAlter

snow 4. Feb 2008 10:31

Re: Laufendes Programm sich selbst verschieben/ kopieren
 
Zitat:

Nein. So geht es nicht. ParamStr(0) enthält bereits den vollen Namen. Da muss "Project1.exe" nicht mehr angehängt werden!
es funkioniert aber auch so...


Zitat aus Delphi-treff
Zitat:

Ordner, in dem sich die eigene Anwendung befindet ermitteln
Delphi-Quellcode:
function GetApplicationDirectory: String;
begin
  Result := ExtractFilePath(ParamStr(0));
end;
das was du meinst ist
Delphi-Quellcode:
Application.Exename
das klappt aber nur wenn Forms eingebunden ist.

gruß snow


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.
Seite 1 von 2  1 2      

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