Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Скопировать файл с заменой   Найти похожие ветки 

 
kMax   (2005-09-05 10:12) [0]

Мастера помогите ! очень надо, как программно скопировать файл
с одной папки в другую без предупреждений о замене файла. Спасибо..


 
begin...end ©   (2005-09-05 10:14) [1]

CopyFile с параметром bFailIfExists = False.


 
Big Joe ©   (2005-09-05 10:20) [2]

Если надо будет скопировать все файлы и подкаталоги..

procedure TForm1.Button1Click(Sender: TObject);
var
 OpStruc: TSHFileOpStruct;
 frombuf, tobuf: array [0..128] of Char;
begin
 FillChar( frombuf, Sizeof(frombuf), 0 );
 FillChar( tobuf, Sizeof(tobuf), 0 );
 StrPCopy( frombuf, "c:\1\*.*" );
 StrPCopy( tobuf, "c:\2" );
 with OpStruc do
 begin
   Wnd:= Handle;
   wFunc:= FO_COPY;
   pFrom:= @frombuf;
   pTo:=@tobuf;
   fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
   fAnyOperationsAborted:= False;
   hNameMappings:= nil;
   lpszProgressTitle:= nil;
 end;
 ShFileOperation( OpStruc );
end;


 
Попов Виталий   (2005-09-06 09:15) [3]

Вот пример, наверное попроще.
Правда на D5, но думаю должен работать и на семерке.

function CopyFile( InFile,OutFile: String; From,Count: Longint ): Longint;
 var
   InFS,OutFS: TFileStream;
 begin
 try
   InFS  := TFileStream.Create( InFile,  fmOpenRead );
   OutFS := TFileStream.Create( OutFile, fmCreate   );
   InFS.Seek( From, soFromBeginning );
   Result := OutFS.CopyFrom( InFS, Count );
  finally
   InFS.Free;
   OutFS.Free;
  end;
 end;


 
kMax   (2005-09-06 10:15) [4]

2 Big Joe
А где в вашей функции нужно установить чтобы заменяла? Скажите
пожалуйста...


 
Anderson2005   (2005-09-06 10:30) [5]

Есть такая функция в Дельфи Rename посмотри


 
alex_***   (2005-09-06 14:06) [6]

посмотри [1]


 
Попов Виталий   (2005-09-06 16:37) [7]

В примере [3] ничего больше устанавливать не надо, файлы заменяются без проблем, кроме некоторых случаев:
Исходный или заменяемый файл используются, заменяемый файл имеет признак "Только чтение". Но в этих случаях функция CopyFile тоже не заменяет. Во втором случае, для того, чтобы файл был заменен новым надо снимать признак "Только чтение". А вообще, я наверное, соглашусь с людьми, что вариант [1] проще. Можно так написать (это если не брать в расчет ситуации рассмотренные выше):

Procedure CopyFile( InFile,OutFile);
begin
 CopyFile(PChar(InFile), Pchar(OutFile), false);
end;


 
Попов Виталий   (2005-09-06 17:11) [8]

попробовал [2]-работает лучше, уже не обращает внимание на "Только чтение". Только надо убрать один параметр, чтобы заменял, строку:
fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
надо писать так:
fFlags:= FOF_NOCONFIRMATION;



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.054 c
6-1118236818
Vadim
2005-06-08 17:20
2005.10.02
Отправить письмо.


14-1126446734
DelphiN!`
2005-09-11 17:52
2005.10.02
Среды программирования на КПК и под КПК


4-1123257781
Андрей Молчанов
2005-08-05 20:03
2005.10.02
Освобождение всяких IShellFolder, PItemIDList и т.д.


1-1126600658
keal
2005-09-13 12:37
2005.10.02
как сделать иконку в трее в консольной программе?


2-1124753373
Quadra
2005-08-23 03:29
2005.10.02
"Зависающее" приложение