Главная страница
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.03 c
2-1124771200
Демидрол
2005-08-23 08:26
2005.10.02
Помогите разукрасить dbGrid


2-1124562995
Пантелеев Иван
2005-08-20 22:36
2005.10.02
RadioGroup


1-1126537952
WonderfulDay
2005-09-12 19:12
2005.10.02
Hbitmap vs Tbitmap


1-1126014139
DeadMoroz
2005-09-06 17:42
2005.10.02
dxDBGrd1.SelectedNodes


1-1125990566
Hereticsoul
2005-09-06 11:09
2005.10.02
Delphi 8