Ovaj kod je Borland Turbo Pascal 7... kod je vrlo jednostavan
Code:
const
BuffSize = 32 * 1024; // 32 kb
Ovaj deo odredjuje velicinu bafera koji ce se koristiti za prenos... 32kb je sasvim dovoljno, ali mozes da ga povecas do max 64k
Code:
var
SrcFile, DestFile: File;
Buff: Pointer;
R: Word;
SrcName, DestName: String;
SrcFile i DestFile su promenljive koje identifikuju datoteke... SrcFile fajl koji zelis da kopiras, a DestFile je nov fajl koji se dobija kopiranjem.
Buff je bafer koji se koristi za kopiranje... prvo se iz izvornog fajla procita odredjeni broj bajtova u bafer pa se iz bafera ti bajtovi upisu u nov fajl.
R je promenljiva koja se koristi prilikom citanja i pisanja bajtova. Kada procitamo bajtove iz izvornog fajla mi zatrazimo BuffSize bajtova, ali ne mora da znaci da je toliko ostalo u izvrsnom fajlu da se procita pa nam u R ostaje stvaran broj procitanih bajtova koje treba da upisemo u nov fajl.
SrcName i DestName su imena fajlova. To je jedino sto treba da das programu da bi mogao da odradi svoj posao. Ako hoces da kopiras sllika.jpg sa C: na D: onda je SrcName := 'C:\sllika.jpg', a DestName := 'D:\sllika.jpg';
Code:
GetMem(Buff, BuffSize);
Assign(SrcFile, SrcName);
Assign(DestFile, DestName);
Reset(SrcFile, 1);
Rewrite(DestFile, 1);
Ovaj deo zauzima memoriju za bafer koji ce nam sluziti za kopiranje i otvara izvorni fajl za citanje i nov fajl za pisanje. Ovde je sve jasno.
Code:
while not Eof(SrcFile) do
begin
BlockRead(SrcFile, Buff^, BuffSize, R);
BlockWrite(DestFile, Buff^, R);
end;
Ovo je deo koji radi kopiranje. Dok izvorni fajl nije procitan do kraja izvrsava se while petlja. U bafer se ucitava BuffSize bajtova i u R dobijamo tacan broj bajtova koji smo dobili. Zatim se iz bafera upisuje R bajtova u nov fajl i tako sve do kraja izvornog fajla.
Code:
Close(SrcFile);
Close(DestFile);
FreeMem(Buff);
Na kraju zatvaramo oba fajla i oslobadjamo memoriju koju smo koristila za baferovanje podataka.
To je cela mudrost... od ovog mozes napraviti proceduru npr. CopyFile koja uzima dva stringa SrcName i DestName i jednostavno mozes da je pozoves kao CopyFile('C:\slika.jpg', 'D:\slika.jpg');
Nadam se da ti je sad jasno.