Kopiowanie plików

Adam Boduch

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 komentarzy

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).

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

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 ????