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;
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 ????
Dziwne, jak kopiuję plik tekstowy za pomocą tego kodu, to ucina mi jego końcówkę :/.
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).