Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi EXE kopiert sich selbst... (https://www.delphipraxis.net/60043-exe-kopiert-sich-selbst.html)

ichbins 2. Jan 2006 12:45

Re: EXE kopiert sich selbst...
 
Geht doch gaanz einfach:
Delphi-Quellcode:
var
  f,t:file of byte;
  buf:array[1..4096] of byte;
  copied:integer;
begin
  assignfile(f,application.exename);
  assignfile(t,NEWFILENAME);
  filemode:=0;
  reset(f);
  filemode:=2;
  rewrite(t);
  while not eof(f) do
  begin
    blockread(f,buf,4096,copied);
    blockwrite(t,buf,copied);
  end;
  closefile(f);
  closefile(t);
end;

cruso 2. Jan 2006 12:48

Re: EXE kopiert sich selbst...
 
Nein, nein...
Wie ich die Batch-Datei starte ist mir klar. Was ich mich frage ist, wie ich in dieser Datei (also der Batch-Datei) die Pfade übergebe. Also ob die $,%-Zeichen drinne sein müssen.
Oder ob das auch so gehen kann

Delphi-Quellcode:
copy "C:\\bla.exe" "D:\\bla.exe"

oder wie muss das genau aussehen? Mit ein paar Beispielen würde ich's sicherlich verstehen! :zwinker:

ichbins 2. Jan 2006 12:52

Re: EXE kopiert sich selbst...
 
Mit der Batchdatei ist das immer schwierig, da, falls z.B. ein ä im exename vorkommt, dieses übersetzt werden muss. Viel besser ist es wenn du die EXE einfach schon im Code kopierst. Natürlich kann es auch so gehen wie du es beschrieben hast:

Code:
@echo off
echo. Kopiere...
copy "c:\bla.exe" "d:\bla.exe"

cruso 2. Jan 2006 13:02

Re: EXE kopiert sich selbst...
 
Ja! Es funzt! Danke für eure Hilfe!

tommie-lie 2. Jan 2006 13:45

Re: EXE kopiert sich selbst...
 
Zitat:

Zitat von himitsu
ParamStr(0), oder Application.ExeName (ersteres is aber besser, außerdem greift letzteres eh auch nur auf ParamStr zu)

Wenn du eh schon weißt, daß TApplication.ExeName lediglich ParamStr(0) verwendet, warum faselst du dann noch irgendwas von "das eine sei besser als das andere"? Es wird ein Call gespart, das macht den Braten auch nicht fett.

himitsu 2. Jan 2006 14:29

Re: EXE kopiert sich selbst...
 
weil es dennoch einige gibt, die lieber Application.ExeName nehmen und es das halt auch gibt ... und nur weil ich selber ParamStr(0) verwende, muß ich es ja keinem aufzwingen (schließlich kann man bei ExeName wenigstens erkennen, was da gemeint ist)

tommie-lie 2. Jan 2006 14:40

Re: EXE kopiert sich selbst...
 
Zitat:

Zitat von himitsu
und nur weil ich selber ParamStr(0) verwende, muß ich es ja keinem aufzwingen

Und deshalb behauptest du, daß ParamStr(0) besser sei?

Zitat:

Zitat von himitsu
schließlich kann man bei ExeName wenigstens erkennen, was da gemeint ist

Und deshalb behauptest du, daß ParamStr(0) besser sei?

himitsu 2. Jan 2006 21:38

Re: EXE kopiert sich selbst...
 
Und du wiederholst dich.

Delphi-Quellcode:
type
  TApplication = class(TComponent)
  private
    ...
    function GetExeName: string;
    ...
  public
    ...
    property ExeName: string read GetExeName;
    ...
  end;

...

function TApplication.GetExeName: string;
begin
  Result := ParamStr(0);
end;
Was effektiver ist, sollte wohl erkennbar sein.

Es ist ja jedem selber überlassen, was er/sie nimmt.
Aber dennoch ist der Hinweis darauf, was "besser" (nach Tempo und Codegröße) ist nicht verkehrt, da dieses ja unter Umständen die Entscheidung, was letzt Endlich genommen wird, beeinflussen kann.

DGL-luke 2. Jan 2006 22:10

Re: EXE kopiert sich selbst...
 
Application.ExeName hat den Vorteil, dass der Code dann besser lesbar ist.
Paramstr(0) hat den Vorteil, dass es einen Aufruf spart.

Was einem wichtiger ist, kann sich doch dann jeder selbst aussuchen.

Muss man darauf so herumreiten? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 Uhr.
Seite 2 von 2     12   

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