5 Şubat 2012 Pazar

Copy-Delete-Move Function

uses  ShellApi;
function CopyDir(const fromDir, toDir: string): Boolean;
var   fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do  begin
wFunc  := FO_COPY;
 fFlags := FOF_FILESONLY;
 pFrom  := PChar(fromDir + #0);
 pTo    := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;

function MoveDir(const fromDir, toDir: string): Boolean;
var   fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do  begin
wFunc  := FO_MOVE;
fFlags := FOF_FILESONLY;
pFrom  := PChar(fromDir + #0);
pTo    := PChar(toDir)
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;

procedure TForm1.Button1Click(Sender: TObject);
begin
if cCopyDir('d:\download', 'e:\') = True then
ShowMessage('Directory copied.');
end;

Cut-Copy-Paste

Kesme, Kopyalama ve Yapıştırma işlemlerini, Klavye kullanılarak yapmak oldukça kolaydır. Bu işlemler menü elemanları vasıtasıyla da yapılabilir. Şayet bileşen, bu komutları aldığında ne yapacağını biliyorsa, Windows mesajlarını kullanmak en uygun hareket tarzıdır.
Kesme;
if GetFocus <> 0 then  { Seçili bir pencere varmı? }
SendMessage( GetFocus, WM_CUT, 0, 0
Kopyalama;
if GetFocus <> 0 then  { Seçili bir pencere varmı? }
SendMessage( GetFocus, WM_COPY, 0, 0
Yapıştırma;
if GetFocus <> 0 then  { Seçili bir pencere varmı? }
SendMessage( GetFocus, WM_PASTE, 0, 0);

Copy-Cut-Past-Delete Edit uygulaması

*- COPY CUT PAST DELETE UNDO
edit1.perform(wm_copy,0,0); // edit1 deki metni panoya kopyalar.
edit1.perform(wm_cut,0,0); // Kes işlemini yapar.
edit1.perform(wm_paste,0,0); // Panodaki metni edit1 e yapıştırır.
edit1.perform(wm_clear,0,0); // edit1.clear 'de aynı işi görür.
Edit1.perform(em_undo,0,0); // Yapılan son işlemi geri alır.

Bu kodları memo, listbox, combobox, richtext bileşenleri içinde kullanabilirsiniz.

Copy-Delete-Move Function

uses  ShellApi;
function CopyDir(const fromDir, toDir: string): Boolean;
var   fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do  begin
wFunc  := FO_COPY;
 fFlags := FOF_FILESONLY;
 pFrom  := PChar(fromDir + #0);
 pTo    := PChar(toDir)
end;
Result := (0 = ShFileOperation(fos));
end;

function MoveDir(const fromDir, toDir: string): Boolean;
var   fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do  begin
wFunc  := FO_MOVE;
fFlags := FOF_FILESONLY;
pFrom  := PChar(fromDir + #0);
pTo    := PChar(toDir)
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;

procedure TForm1.Button1Click(Sender: TObject);
begin
if cCopyDir('d:\download', 'e:\') = True then
ShowMessage('Directory copied.');
end;

Copy File or Directory

uses ShellAPI;
function CopyAllFiles(sFrom, sTo: string; Protect: boolean): boolean;
{ Copies files or directory to another directory. }
var F: TShFileOpStruct; ResultVal: integer; tmp1, tmp2: string;
begin
FillChar(F, SizeOf(F), #0);
Screen.Cursor := crHourGlass;
try
F.Wnd := 0;
F.wFunc := FO_COPY;
{ Add an extra null char }
tmp1 := sFrom + #0;
tmp2 := sTo + #0;
F.pFrom := PChar(tmp1);
F.pTo := PChar(tmp2);
if Protect then
F.fFlags := FOF_RENAMEONCOLLISION or FOF_SIMPLEPROGRESS
else
F.fFlags := FOF_SIMPLEPROGRESS;
F.fAnyOperationsAborted := False;
F.hNameMappings := nil;
Resultval := ShFileOperation(F);
Result := (ResultVal = 0);
finally
Screen.Cursor := crDefault;
end;
end;

Copy File - Windows Apileri kullanarak

Function CopyFiles(const Source,Destination: String): Boolean;
  var
  SHFileOpStruct : TSHFileOpStruct;
  begin
  if FileExists(Source) then
  begin
  FillChar(SHFileOpStruct,SizeOf (TSHFileOpStruct),#0);
  with SHFileOpStruct do begin
  Wnd:=Application.Handle;
  wFunc:=FO_COPY;
  fFlags:=FOF_ALLOWUNDO;
  hNameMappings:=nil;
  pFrom:=PChar(Source+#0+#0);
  pTo:=PChar(Destination+#0+#0);
  end;
  Result := ShFileOperation(SHFileOpStruct ) = 0;
  end else Result := False;
  end;
// Kullanımı:
procedure TForm1.Button1Click(Sender: TObject);
begin
if not CopyFiles('C:\\windows\\notepad. exe', 'C:\\sil\\notepad.exe') then
showmessage('Kopyalama islemi basarisiz');
end;

Copy File Örnekleri

COPY FILE

Uses ShellApi, ShlObj;

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;

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

***YADA***

Hedef dizin, c:\deneme\ olsun . Proğramı otomatik olarak bulur ve hedef dizine koyalar.

CopyFile(pchar(ExtractFileName(Application.ExeName)),pchar('C:\deneme\' + ExtractFileName(Application.ExeName)), True);

***YADA***

  CopyFile('C:\\Autoexec.bat', 'A:\\Backup\\Autoexec.bat', False);
  CopyFile(PChar(Edit1.Text), PChar(Edit2.Text), False);

***YADA***

uses ShellAPI;
function CopyAllFiles(sFrom, sTo: string; Protect: boolean): boolean;
{ Copies files or directory to another directory. }
var F: TShFileOpStruct; ResultVal: integer; tmp1, tmp2: string;
begin
FillChar(F, SizeOf(F), #0);
Screen.Cursor := crHourGlass;
try
F.Wnd := 0;
F.wFunc := FO_COPY;
{ Add an extra null char }
tmp1 := sFrom + #0;
tmp2 := sTo + #0;
F.pFrom := PChar(tmp1);
F.pTo := PChar(tmp2);
if Protect then
F.fFlags := FOF_RENAMEONCOLLISION or FOF_SIMPLEPROGRESS
else
F.fFlags := FOF_SIMPLEPROGRESS;
F.fAnyOperationsAborted := False;
F.hNameMappings := nil;
Resultval := ShFileOperation(F);
Result := (ResultVal = 0);
finally
Screen.Cursor := crDefault;
end;end;