Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kopiranje u pascalu???????

[es] :: Pascal / Delphi / Kylix :: Kopiranje u pascalu???????

[ Pregleda: 2110 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Passwd

Član broj: 54624
Poruke: 640
*.cmu.carnet.hr.



Profil

icon Kopiranje u pascalu???????06.04.2005. u 16:41 - pre 231 meseci
Kako napravit program koji ce skopirati jednu datoteku na neko drugo mjesto na disku?
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kopiranje u pascalu???????06.04.2005. u 16:56 - pre 231 meseci
program bi izgledao otprilike ovako
Code:
const
  BuffSize = 32 * 1024; // 32 kb

var
  SrcFile, DestFile: File;
  Buff: Pointer;
  R: Word;
  SrcName, DestName: String;

begin
  // Ne znam kako zelis da dodjes do imena fajlova
  // taj deo napisi sam
  // mozes korisiti ParamStr promenljivu za to
  GetMem(Buff, BuffSize);
  Assign(SrcFile, SrcName);
  Assign(DestFile, DestName);
  Reset(SrcFile, 1);
  Rewrite(DestFile, 1);
  while not Eof(SrcFile) do
  begin
    BlockRead(SrcFile, Buff^, BuffSize, R);
    BlockWrite(DestFile, Buff^, R);
  end;
  Close(SrcFile);
  Close(DestFile);
  FreeMem(Buff);
end.

Mozda ima po neka greska jer sam ovo pisao iz glave, ali to je princip.
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.cmu.carnet.hr.



Profil

icon Re: Kopiranje u pascalu???????06.04.2005. u 18:49 - pre 231 meseci
Nisam napomenio da imam borland turbo pascal,tako da ne rade neke naredbe kao i u freepascalu (get,put...).Ne kuzim ovaj program sto si ga gore napisao.
Evo primjer:na c disku postji datoteka sllika.jpg, a ja trebam program koji ce tu sliku.jpg prebaciti na drugo mjesto (npr.:d disk).A kako da mu napisem gdje da kopira taj fajl i koji fajl??
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kopiranje u pascalu???????06.04.2005. u 23:06 - pre 231 meseci
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.
 
Odgovor na temu

bancika
Branislav Stojkovic

Član broj: 24844
Poruke: 631
212.62.58.*

Sajt: www.diy-fever.com


+1 Profil

icon Re: Kopiranje u pascalu???????07.04.2005. u 15:41 - pre 231 meseci
a sta fali CopyFile(Source, Destination, Overwrite)?
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
82.208.201.*

ICQ: 246436949


+10 Profil

icon Re: Kopiranje u pascalu???????07.04.2005. u 17:11 - pre 231 meseci
U TP 7 to ne postoji, zar ne?
 
Odgovor na temu

Passwd

Član broj: 54624
Poruke: 640
*.cmu.carnet.hr.



Profil

icon Re: Kopiranje u pascalu???????07.04.2005. u 19:05 - pre 231 meseci
Lijepo si to pojasnio,svaka cast.
Hvala!!
 
Odgovor na temu

Vdjuric
Vladimir Djuric
student
Beograd

Član broj: 20863
Poruke: 64
*.dial.InfoSky.Net.

Sajt: www.marettasoftware.com


Profil

icon Re: Kopiranje u pascalu???????07.04.2005. u 23:59 - pre 231 meseci
Trebalo bi tu ubaciti jos i proveru da li je citanje / zapisivanje odradjeno kako treba... preko ioresult promenljive i {$I-}, {$I+} direktiva kompajleru, i to je to...
poz
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kopiranje u pascalu???????

[ Pregleda: 2110 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.