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