Avatar billede zildjian Nybegynder
26. september 2003 - 17:13 Der er 8 kommentarer og
3 løsninger

Kopiere programmet til anden mappe

Hej

Jeg har før haft en stump kode, der kunne kopiere programmet selv til en anden mappe. Men jeg er kommet til at smide det væk, nogen der ka hjælpe mig?

/ZIldjian
Avatar billede snowball Novice
26. september 2003 - 17:21 #1
procedure TForm1.Button1Click(Sender: TObject);
var
  pFrom, pTo: String;
begin
  pFrom := Application.Exename;
  pTo := Edit1.Text + ExtractFileName(Application.ExeName);
  CopyFile(PChar(pFrom), PChar(pTo), true);
end;

Edit1 indeholder stien til den folder hvor programmet skal kopieres hen.

Snowball
Avatar billede Slettet bruger
26. september 2003 - 17:24 #2
Avatar billede zildjian Nybegynder
26. september 2003 - 17:38 #3
ok.. men hvor angiver jeg hvortil den kopierer sig selv??
Avatar billede snowball Novice
26. september 2003 - 17:58 #4
Det gør du i variablen pTo i mit eksempel.

Snowball
Avatar billede zildjian Nybegynder
26. september 2003 - 18:21 #5
ja, okay... så melder den fejl ved edit1.text... jeg har så fjernet text.. så kommer der ingen fejl.... men den kopierer heller ingen fil!??
Avatar billede dkn Nybegynder
26. september 2003 - 18:25 #6
hm kan faktisk ikke huske copyfile kan kopire kørende filer.

Ellers kan du gøre noget lign:

var
fs : tfilestream;
begin
fs := Tfilestream.create(application.exename, fmopenread+fmsharedenynone);
fs.savetofile('C:\test.exe');
fs.free;
end;

koden er ikke testet
Avatar billede zildjian Nybegynder
26. september 2003 - 18:27 #7
fejl i fs.savetofile('C:\test.exe');
Avatar billede dkn Nybegynder
26. september 2003 - 18:32 #8
sry glemte jeg da lige...

procedure TForm1.Button1Click(Sender: TObject);
var
fs, fs2 : tfilestream;
begin
fs := Tfilestream.create(application.exename, fmopenread+fmsharedenynone);
fs2 := Tfilestream.create('C:\test.exe', fmcreate);
fs2.CopyFrom(fs, fs.Size);
fs2.Free;
fs.free;
end;


testet
Avatar billede snowball Novice
26. september 2003 - 18:37 #9
dkn: Det kan den godt. Har (selvfølgelig) testet mit eksempel :)

zildjian: Det mest Edit1.Text var blot et eksempel på at du kunne bruge et edit felt til at angive hvor programmet skal kopieres til. Du kan angive stien (pTo) på så mange andre måder.

Snowball
Avatar billede stone Forsker
26. september 2003 - 18:40 #10
her er et lille eksempel som kopiere hele biblioteket

uses shellapi

function CopyDir(const fromDir, toDir: string): Boolean;
var
  fos: TSHFileOpStruct;
begin
  ZeroMemory(@fos, SizeOf(fos));
  with fos do
  begin
    wFunc  := FO_COPY;
    fFlags := FOF_FILESONLY;
    pFrom  := PChar(fromDir + #0);
    pTo    := PChar(toDir)
  end;
  Result := (0 = ShFileOperation(fos));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if CopyDir('c:\programmer\borland\delphi5\mit project\listbox', 'c:\temp') = True then
    ShowMessage('Directory copied.');
end;
Avatar billede zildjian Nybegynder
28. september 2003 - 20:07 #11
Fedt takker.... fik det til at virke :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester