Programowanie w języku Delphi » Gotowce

Kopiowanie plików

Oto prosty algorytm dzięki któremu możesz zaobserwować proces kopiowania dowolnych plików bez wykorzystania żadnych gotowych funkcji. Taka umiejętność zapewne Ci się przyda.

Oto kod:

var
  Plik1, Plik2: File;
  rekord: Integer;
  Buf: array [1..4096] of Byte;
begin
  AssignFile(Plik1, 'kopiowany.xxx'); {kojarzymy zmienną z plikiem}
  AssignFile(plik2, 'wklejony.xxx'); {kojarzymy zmienną z plikiem}
  Reset(Plik1, 1); 
  Rewrite(plik2, 1); {tworzymy plik, do ktorego zapiszemy dane i ustawiamy sie na poczatku}
  while not Eof(Plik1) do
    begin
      BlockRead(Plik1, buf, SizeOf(Buf), rekord); {czytamy rekord}
      BlockWrite(Plik2, buf, SizeOf(Buf), rekord); {wpisujemy rekord}
    end; 
  CloseFile(Plik1); {zamykamy plik}
  CloseFile(Plik2); 
end;

3 komentarze

lukasz_j 2005-08-09 19:29

Powyższy kod nie działa w przypadku kopiowania plików z atrybutem \"Tylko-do-odczytu\". Aby temu zapobiec wystarczy zmiennej globalnej FileMode przypisać wartość 0 tuż na samym początku procedury. Poza tym algorytm jest bardzo dobry, świetny zwłaszcza do pokazywania postępu kopiowania pojedyńczego pliku (oczywiście po drobnej modyfikacji).

Stark 2005-02-22 13:02

Dziwne, jak kopiuję plik tekstowy za pomocą tego kodu, to ucina mi jego końcówkę :/.

-=ORanGE=- 2005-01-05 14:11

a będzie to działać jeśli za kopiowany.xxx wklejony xxx
wstawie edit1.text i edit2.text a w nich będzie ścieżka np.
c:\ss.dat oraz d:\dd.dat ????