Главная страница
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.051 c
2-1124714038
NikNet
2005-08-22 16:33
2005.10.02
Как перенаправить ошибку, WinAPI


3-1124493432
TechnoDreamer
2005-08-20 03:17
2005.10.02
select по blob полям


1-1126107297
Виктор_В.С
2005-09-07 19:34
2005.10.02
Очистить String от символов конец строки


14-1126027956
Nous Mellon_
2005-09-06 21:32
2005.10.02
html-засада


1-1126017033
mitur
2005-09-06 18:30
2005.10.02
REG_MULTI_SZ ??