![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как ;в программе выполнить копирование файла?
MaGG © (2002-04-27 12:48:00)Как в программе выполнить копирование файла?
Vovchik (2002-04-27 17:44:00) [1]>Anatoly Podgoretsky
А кто вы чтобы мне тз давать? Почитайте SDK, там всё написано!
Вот нашёл пример в факах. Не проверял, но выглядит похоже.
uses ShellApi;
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, "h:\hook\*.*" );
StrPCopy( tobuf, "d:\temp\brief" );
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;
И почему обязательно один файл? Можно сколько угодно. Можно маски давать.
Anatoly Podgoretsky (2002-04-27 15:16:00) [2]Лучше сам напиши, и мы посмотрил как ты знаешь его и MaGG будет польза. Для тех задания в функцию передаем два параметра, откуда и куда типа string (каждый представляет только один файл)
Vovchik (2002-04-27 15:01:00) [3]Ну вот пристали! Щас раскопаю пример или сам напишу. Кроме того, разобраться надо один раз. А лёгких путей мы не ищем...
Anatoly Podgoretsky (2002-04-27 14:57:00) [4]Vovchik © (27.04.02 14:45)
Использование SHFileOperation не совсем тривиально, как кажется на первый взгляд, в хелпе много не понятного для начинающих.
MaGG (27.04.02 14:40)
Смотри еще раз совет от Johnmen © (27.04.02 14:44)
Vovchik (2002-04-27 14:45:00) [5]А чего там непонятного?
В Uses надо скорее всего ShellApi.
Johnmen (2002-04-27 14:44:00) [6]>MaGG : Почитай ветку еще раз и прими верное для тебя решение...
MaGG (2002-04-27 14:40:00) [7]Спасибо всем,
Так как првильно пользовать SHFileOperation ?
Из хелпа нихрена непонятно.
Можно примерчик на пальцах?
Что надо подкльчать в Uses?
Anatoly Podgoretsky (2002-04-27 14:38:00) [8]И еще добавить какое количество ошибок совершают при использовании SHFileOperation, а так чего нормальная функции не хуже CopyFile
Shell (2002-04-27 14:24:00) [9]Для винды, которая безусловно есть на машне юзера может использоваться альтернативный Shell, а родной может быть выдран с корнем
Vovchik (2002-04-27 14:18:00) [10]> Shell
Как это не быть шела? SHFileOperation сидит в Shell32.dll. А её не может не быть.
Может, вы скажете, что у юзера нет винды?
Johnmen (2002-04-27 14:17:00) [11]>Shell (27.04.02 14:11) :
Вполне здравое замечание !
И еще - может не быть Win, а быть Linux или Солярка или ... :)
Johnmen (2002-04-27 14:13:00) [12]"Как в программе выполнить копирование файла? "
CopyFile копирует ? Копирует !
А обсуждение достоинств и недостатков - отдельная тема :)
(я не призываю юзать именно CopyFile)
Shell (2002-04-27 14:11:00) [13]Вопрос в том, что shell"а у юзера может и не быть
Vovchik (2002-04-27 14:08:00) [14]Я так и не понял, в чём вопрос, если одна копирует медленно, а другая быстро...
Кроме того, CopyFile не умеет копировать права.
Johnmen (2002-04-27 14:06:00) [15]>Vovchik © :
Да я что , спорю что-ли ???????????!!!!!!!!!!!!
Я лишь утверждаю, что ...
>А разных функций для работы с файлами существет множество,
>и какая из них лучше или хуже - еще вопрос...
Vovchik (2002-04-27 14:00:00) [16]> Johnmen
Нет уж извиняйте, не вопрос. Проделайте простой эксперимент. Скопируйте большое количество файлов сначала при помощи CopyFile, а потом с помощью Експлорера (который использует SHFileOperation). Разницы в 10 раз не гарантирую, но раз в 5 будет точно. В качестве тестового набора файлов подойдёт дистрибутив ХР или 2К. Если копировать один очень большой файл - CopyFile опять же проигрывает, и тоже сильно. Этим объясняется то, что Far копирует намного медленнее, чем Експлорер или WindowsCommander.
По-моему, вопросов быть не может. Проверьте и убедитесь.
А CopyFile остался от 16-битной винды, и его не убрали, видимо, для совместимости со старыми программами.
Shell (2002-04-27 13:56:00) [17]А если юзер использует альтернативный shell в котором не реализован SHFileOperation?
Johnmen (2002-04-27 13:51:00) [18]>Vovchik © :
Так я же ничего не придумывал !
И неужели указанные ф-ии абсолютно бессмысленны ?
А разных функций для работы с файлами существет множество,
и какая из них лучше или хуже - еще вопрос...
MVVD (2002-04-27 13:49:00) [19]stt:= "C:\NameF.pas";
if FileExists(stt) then DeleteFile(PChar(stt));
Vovchik (2002-04-27 13:45:00) [20]> Johnmen
Зачем придумывать то, что не имеет смысла? Есть нормальная ф-ция, которая быстро копирует и удаляет файлы. Быстрее всё равно не сделаете. Если ради обучения - то пожалуйста! А ф-ция, предложенная MVVD, наверное будет работать, только зачем она нужна?