bir klasörün içindeki dosyaları başka bir klasöre kopyalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

bir klasörün içindeki dosyaları başka bir klasöre kopyalama

Mesaj gönderen kara_kule06 »

herkese kolay gelsin! bir klasörün içindeki dosyaları başka bir klasöre nasıl kopyalıyabilirim. veya bir klasörün ismini nasıl değiştirebilirim. bununla ilgili arama yaptım fakat istediğim sonucu bulamadım. yardım ederseniz sevinirim.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Usese Shellapi eklemeyi unutma.

Kod: Tümünü seç

procedure CopyFiles(const FromFolder: string; const ToFolder: string);
var
  Fo      : TSHFileOpStruct;
  buffer  : array[0..4096] of char;
  p       : pchar;
begin
  FillChar(Buffer, sizeof(Buffer), #0);
  p := @buffer;
  StrECopy(p, PChar(FromFolder)); //this is folder that you want to copy
  FillChar(Fo, sizeof(Fo), #0);
  Fo.Wnd    := Application.Handle;
  Fo.wFunc  := FO_COPY;
  Fo.pFrom  := @Buffer;
  Fo.pTo    := PChar(ToFolder); //this is where the folder will go
  Fo.fFlags := 0;
  if ((SHFileOperation(Fo) <> 0) or (Fo.fAnyOperationsAborted <> false)) then
    ShowMessage('File copy process cancelled')
end;

Kullanımı:

Kod: Tümünü seç

CopyFiles('Kopyalamak istediğin klasörün yolu ve adı','Kopyalamak istediğin dizin ve ad yani hedef');

Kod: Tümünü seç

CopyFiles('kaynakKlasör','hedefklasör');
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Değiştirmed e aşağıdaki gibi

Kod: Tümünü seç

RenameFile('Eskiad','Yeniad')
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

sağolasın

Mesaj gönderen kara_kule06 »

kardeş denemeden önce birşey sormak istiyorum neden array[1..4096]. 1..128 olsa olurmu?
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

olmuyor

Mesaj gönderen kara_kule06 »

ilgin için sağol ama bu kod dosyaları klasör ile birlikte kopyalıyor. oysa ben sadece klasörün içindeki dosyaları kopyalamasını istiyorum.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
Kullanıcı avatarı
kara_kule06
Üye
Mesajlar: 150
Kayıt: 18 Nis 2006 02:15
Konum: ankara/polatlı
İletişim:

sağol halletttim.

Mesaj gönderen kara_kule06 »

sağol kardeş bana verdiğin kod işimi gördü. kaynak klasörde yol belirtirken 'C:\mysql\data\degerlendir\*.*' diye belirtmem gerekiyormuş oysa ben *.* koymamıştım. iyi çalışmalar.
İlim öğrenmek akıntıya karşı yüzmek gibidir. Ara verildiği zaman gerilenir...
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Mesaj gönderen fox »

iyi günler

paylaşım için teşekkür ederim benim bir sorum var

ben flash diskimdeki dosyaları kopyalamak istiyorum ama sürücü


CopyFiles('H:\','c:\den');

diyince dosya kaynak dosyadan okunamıyor gibi mesaj alıyorum
bu problemi nasıl gideririm
ikut

Mesaj gönderen ikut »

fox yazdı:iyi günler

paylaşım için teşekkür ederim benim bir sorum var

ben flash diskimdeki dosyaları kopyalamak istiyorum ama sürücü


CopyFiles('H:\','c:\den');

diyince dosya kaynak dosyadan okunamıyor gibi mesaj alıyorum
bu problemi nasıl gideririm
Flash diskler her zaman aynı sürücü harfini alacak diye bir kural yokki.... Mesela bazen G de olabiliyor. D de J de.

Saygılar
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Mesaj gönderen fox »

yok sürücünün ismi h: beni bilgisayarda öyle ayrıca flash disk teki herhangi bir klasörü kopyala diyince kopyalıyo(h:\den\ desem oluyo) ama h:\ diyince olmuyo problem buradan kaynaklanıyor
Kullanıcı avatarı
drony
Üye
Mesajlar: 48
Kayıt: 10 Tem 2004 04:41
Konum: Istanbul
İletişim:

Mesaj gönderen drony »

http://www.unreadedpost.com/index.php?s ... l=copyfile
http://www.unreadedpost.com/index.php?s ... l=copyfile

Kod: Tümünü seç


uses 
shellapi 

function FileManager(xSourcePath, xDestPath, xPara: string): Boolean; 
var 
PFileMsg: TSHFileOpStruct; 
mNowPath: string; 
begin 
Result := False; 
FillChar(PFileMsg, sizeof(PFileMsg), #0); 
if pos('.', xpara) = 0 then 
exit; 
mNowPath := GetCurrentDir; 
if xSourcePath <> '' then 
if not DirectoryExists(xSourcePath) then 
begin 
showmessage('The source path does not exist !'); 
exit; 
end; 
if xDestPath <> '' then 
if not DirectoryExists(xDestPath) then 
begin 
showmessage('The destination path does not exist !'); 
exit; 
end; 
if SetCurrentDirectory(Pchar(xSourcePath)) then 
begin 
with PFileMsg do 
begin 
if Owner is TForm then 
Wnd := TForm(Owner).Handle 
else 
Wnd := Application.Handle; 
if xDestPath <> '' then 
begin 
wFunc := FO_COPY; 
PTo := pChar(xDestPath); 
fFlags := FOF_MULTIDESTFILES + FOF_NOCONFIRMATION; 
end 
else 
begin 
wFunc := FO_DELETE; 
fFlags := FOF_ALLOWUNDO + FOF_NOCONFIRMATION; 
end; 
pFrom := PChar(xPara + #0#0); 
end; 
SHFileOperation(PFileMsg); 
SetCurrentDirectory(Pchar(mNowPath)); 
Application.ProcessMessages; 
Result := True; 
end; 
end; 


Example: 

CopyFile: 
FileManager('C:Demo', 'C:Temp', '*.*'); 

DeleteFile: (delete C: Demo * . * ) 
FileManager('C:Demo', '', '*.*'); 


2.yol 

uses 
ShellAPI; 

procedure TForm1.BtnCopyClick(Sender: TObject); 
var 
fileOp: TShFileOpStruct; 
fromDir: string; 
toDir: string; 
begin 
FillChar(fileOp, Sizeof(TShFileOpStruct), 0); 
fromDir := DirectoryListBox1.Directory + '*.*'#0; 
toDir := DirectoryListBox2.Directory + #0; 
with fileOp do 
begin 
wnd := Handle; 
wfunc := FO_COPY; 
pFrom := PChar(fromDir); 
pTo := PChar(toDir); 
fFlags := FOF_ALLOWUNDO; 
fAnyOperationsAborted := false; 
hNameMappings := nil; 
lpszProgressTitle := nil; 
end; 
SHFileOperation(fileOp); 
end; 
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Mesaj gönderen fox »

arkadaslar yardımlarınız için teşekkürler


Owner diye şeyi tanımıyo

[Error] Unit1.pas(51): Undeclared identifier: 'Owner'
[Error] Unit1.pas(51): Operator not applicable to this operand type
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'


böyle hata veriyo

ama en üsteki kodla işi hallettim
normal klasör kopyala diyince h:\den oluyo demiştim h:\ diyince olmuyo demiştim sorunu düzelttim h:\*.* yapınca oluyo

benim bir sorum daha olacak bu flash bellek yedeklenmesi işi için var olan dosyayı kopyalıyımı diyor bu ben butona basınca böyle zırt pırt uyarı verecek bir şey istemiyorum her şeyi sorgusuz olarak kaydetmesini istiyorum bu mümkünmüdür
fox
Üye
Mesajlar: 78
Kayıt: 24 Nis 2006 08:28

Mesaj gönderen fox »

benim bi sorum daha olacak ben kendime göre şöyle bir şey yaptım

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);

var
dosyasay: integer;
sonuc : TSearchRec;
begin
dosyasay := FindFirst(form1.Edit1.Text+'*.*', faAnyFile - faDirectory, sonuc);
  while dosyasay = 0 do
  begin
    memo1.Lines.Add(sonuc.name);
    CopyFile(PAnsiChar(form1.edit1.Text+sonuc.name),PAnsiChar('C:\kopyalama\'+sonuc.name),TRUE);
    dosyasay := FindNext(sonuc);
  end;
  FindClose(sonuc);
end;
çalışıyor ama klasörün içindeki klasörü kopyalayamıyorum

bunu aşmak için aklıma faDirectory bunu çıkartıp diğerlerini kopyalayıp klasörler için klasör oluşturup onun içindekileri kopyalarım diye düşündüm ama 4 5 klasör alt altta ise bu sonsuza kadar gidecek bunu nasıl halladerim
Ottoman

Mesaj gönderen Ottoman »

Selam.Aşağıdaki kodlarla ne var ne yok kopyalarsın;

Uses'e ShellApi; ekleyiniz.

Kod: Tümünü seç

function copydir(von,zieldir: String): boolean; 
var fos: TSHFileOpStruct; 
begin 
ZeroMemory(@fos, SizeOf(fos)); 
with fos do begin 
wFunc := FO_COPY; 
fFlags := FOF_FILESONLY; 
pFrom := PChar(von+#0); 
pTo := PChar(zieldir) 
end; 
Result:=(0=ShFileOperation(fos)); 
end; 

function movedir(von,zieldir: String): boolean; 
var fos: TSHFileOpStruct; 
begin 
ZeroMemory(@fos, SizeOf(fos)); 
with fos do begin 
wFunc := FO_MOVE; 
fFlags := FOF_FILESONLY; 
pFrom := PChar(von+#0); 
pTo := PChar(zieldir) 
end; 
Result:=(0=ShFileOperation(fos)); 
end; 

function deldir(dir: String): boolean; 
var fos: TSHFileOpStruct;
begin 
ZeroMemory(@fos, SizeOf(fos)); 
with fos do begin 
  wFunc := FO_DELETE; 
  fFlags := FOF_SILENT or FOF_NOCONFIRMATION; 
  pFrom := PChar(dir+#0); 
end;
Result:=(0=ShFileOperation(fos)); 
end;
Kulanımı;

Kod: Tümünü seç


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 {'c:\download' -> 'c:\'}
 if copydir('c:\arsiv','c:\prgfile\') then //Arşiv'in içinde ne var ne yok kopyalanır.
   begin
    Form1.Caption:=('Dosyalar klasörler Kopyalandi    ');
   end;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 {'c:\download' -> 'c:\'}
 if copydir('c:\prgfile\arsiv','c:\') then
   begin
    Form1.Caption:=('Dosyalar Klasörler Geri Yüklendi    ');
   end;
end;
iyi çalışmalar.
sulocan
Üye
Mesajlar: 11
Kayıt: 28 Haz 2005 06:01
Konum: İZMİR

Selam Arkadaşlar

Mesaj gönderen sulocan »

Klasör kopyalama, taşıma ve silme için güzel bir kod. Sormak istediğim bişey var...Kopyalarken bana böyle bir klasör var üzerine yazılsınmı diye sormasını istemiyorum...Kopyala dediğim anda üzerine kopyalamasını istiyorum...Bunu nasıl yapabilirim...Yardımcı olacak arkadaşlara şimdiden teşekkür ederim...
sulocan
Üye
Mesajlar: 11
Kayıt: 28 Haz 2005 06:01
Konum: İZMİR

Re: Selam Arkadaşlar

Mesaj gönderen sulocan »

sulocan yazdı:Klasör kopyalama, taşıma ve silme için güzel bir kod. Sormak istediğim bişey var...Kopyalarken bana böyle bir klasör var üzerine yazılsınmı diye sormasını istemiyorum...Kopyala dediğim anda üzerine kopyalamasını istiyorum...Bunu nasıl yapabilirim...Yardımcı olacak arkadaşlara şimdiden teşekkür ederim...
Bana bu konuda yardımcı olabilecek hiç kimse yokmu :(
Cevapla