[ gygy @ 20.11.2003. 21:23 ] @
Kako da napravim program koji ce kad kliknem na Buton1 da kopira na primer sve iz foldera gde mi se nalazi Project1.exe u folder npr C:\proba\
Hvala unapred!
[ goblin @ 22.11.2003. 13:02 ] @
Koristi TFileListBox koji podesis da je nevidljiv, podesi ga da ti filtrira sta ti treba u poddirektorijumu iz kojeg kopiras, a zatim koristi funkciju CopyFile(). Proveri prvo da li postoji ciljni direktorijum (valjda DirectorExists(...), nisam siguran).

Opis svih ovih i jos mnogih drugih funkcija imas u helpu. Pozdrav
[ Milos D @ 23.11.2003. 12:25 ] @
Pogledaj u win32.hlp objašnjenje funkcije SHFileOperation - možda deluje komplikovano na prvi pogled, ali radi odlično. (uses shellapi)

n.b.
pFrom i pTo parametri moraju da se završavaju sa DVA #0 karaktera (jedan #0 je uvek poslednji znak stringa, dok drugi oznacava kraj saržaja parametra).
[ gygy @ 24.11.2003. 19:27 ] @
Hvala na trudu, ali zapravo meni treba sledece: Napravio sam neki nazovi "podsetnik" i sad zelim da kad ulazim u programa (TForm1.FormOpen) da on kopira bazu iz direktorijuma gde mi je baza (C:\Podenik\Baza.Dat i C:\Podenik\Broj.Dat) u vec kreiran direktorijum (c:\Podsetnik\Bazarez\Baza.dat i c:\Podsetnik\Bazarez\Broj.dat, radi sigurnosti) i da ne postavlja pitanje u fazonu da li si siguran... i tako to i ukoliko postoji da je prekopira. Kako bi to najlakse mogao da izvedem?
Unapred HVALA!!!
GYGY
[ Rapaic Rajko @ 25.11.2003. 12:02 ] @
Code:

  CopyFile(pchar(OldName), pchar(NewName), false);


Ovo gore kopira fajl na odrediste bez obzira da li vec postoji. Ako zelis da ne "gazi" postojeci fajl, poslednji parametar treba da bude true.

Rajko
[ Milos D @ 25.11.2003. 12:42 ] @
Ako su samo dva fajla u pitanju, onda koristi copyfile kao sto kaze Rajko.

Ako hoces ceo direktorijum da kopiras, onda ponovo preporucujem SHFileOperation koji ne mora da te pita "are you sure", treba samo da postavis opciju FOF_NOCONFIRMATION

Ako bas neces SHFileOperation, onda mozes i da koristis FindFirst/FindNext funkcije (imas primer u helpu) pa svaki fajl iskopiras sa CopyFile.
[ morlic @ 25.11.2003. 21:03 ] @
Snadji se sa ovim kodom:

Code:

function CopyFiles ( Source, Destination : string ): boolean;
Var s : string;
    Fo : TSHFileOpStruct;
    buffer  : array[0..4096] of char;
    p : pchar;
begin
     FillChar(Buffer, sizeof(Buffer), #0);
     p := @buffer;
     StrECopy( p, PChar( Source ));

     // Pripremamo podatke
     FillChar(Fo, sizeof(Fo), #0);
     Fo.Wnd    := Handle;
     Fo.wFunc  := FO_COPY;
     Fo.pFrom  := @Buffer;
     Fo.pTo    := PChar( Destination );
     Fo.fFlags := FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION or
                  FOF_NOERRORUI or FOF_SILENT;
                  // FOF_RENAMEONCOLLISION - Preimenuj ako se desi da postoji fajl
     Result := ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false));
end;

[ djnesha @ 27.11.2003. 01:54 ] @
Obrati paznju na fazon :)
U direktorijumu gde ti je project1.exe napravis jedan batch fajl npr kopiraj.bat i u njemu upises:

copy *.* C:\proba

a onda u funkciji button1.click u Delphiju napises

winexec('kopiraj.bat',sw_hide);

i to je to! Kad kliknes dugme program pozove ovaj batch programcic i DOS-ovski iskopiras sta hoces! E,sad ocekujem da neko prokomentarise: U,ALA TI JE RESENJE! :)
[ morlic @ 27.11.2003. 11:04 ] @
U,ALA TI JE RESENJE! :)))))))))
[ gygy @ 03.12.2003. 12:20 ] @
morlicu hvala na trudu ali mislim da je Rapaic Rajko dao najbolje po meni i najjednostavnije resenje za sada!
sredio sam pomocu njegovog koda posto sam imao samo da kopiram dva fajla, i sve to sam ubacio u Button1.onclick, i radi savrseno!!!
Hvala!!!
Pozdrav
GYGY